Why do you need an atomic state machine in here when there is not going to be any concurrency when the `Observer` is invoked?

The concurrency will happen in a very controlled place when the timer fires and you emit whatever is queued and onCompleted, but the `on*` events will not be invoked concurrently.