Yes, if there are using SynchronizedObserver I don't believe they should be. It is up to the producer to comply with the contract not the Observer to protect itself (though much of RxJava code is defensive and uses concurrent data structures we don't want that to extend to the more expensive defense of serializing everything).