function step() {
mutable t = Date.now();
mutable dt = mutable t - mutable _expectedNextTickTimestamp;
if (mutable dt > interval) {
}
callback();
mutable _expectedNextTickTimestamp += interval;
mutable _timeoutId = setTimeout(step, Math.max(0, interval - mutable dt));
}