So the schedule early thing, isn't that more likely to be observable right after the `initialDelay` since you calculate the next delay from the original `initialDelay` and not from the rounded up `initialDelay`?

The old timer seems to keep track of when the current `tick` should have finished as well as the absolute time that a task should executed and if it picks up a timeout that's in the wrong bucket then it reschedules it.

Couldn't that be done for this scheduler as well? Not only keeping track of rounds for a task but also the absolute time that it should execute?