const state = Immutable.fromJS({
  time: performance.now(),
  delta: 0
});

const clock = Rx.Observable
  .interval(0, Rx.Scheduler.animationFrame)
  .scan(previous => {
    const time = performance.now();
    return previous.merge({
      time,
      delta: time - previous.get("time")
    });
  }, state);

clock.subscribe(state => {
  document.body.innerHTML = `${Math.round(state.get("delta") * 1000)}μs`;
});
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.3.1/Rx.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js