Why would we want to wait for `timeout` to pass after receiving onCompleted or onError before returning it?

They are terminal states and thus nothing else should come. We shouldn't be waiting but immediately emitting them down as there is nothing else to "throttle". This lends itself to my other comment about this seeming to look at time backwards from what I would expect.

The end result of this current implementation is that a sequence will always take n+timeout to complete as we will always wait for timeout time after receiving a terminal state.