1. reimplement TimerEventSource by uning something else then java.util.Timer, as that one is not good for mocking. 2. implement unit tests without waiting and sleeping to remove flakyness.