I don't think we need a SynchronizedObserver here. There is nothing about this operator that is injecting concurrency in so we don't need to synchronize onNext calls.

By default implementations assume onNext/onCompleted/onError calls are not concurrent and trust that the source abides by the Rx contract.

Operators like `merge` and `zip` which are inherently concurrent must synchronize but most should not need to.