If there is a separate `ItemObserver` for each `Observable`, why does it need a lock for `onNext`/`onCompleted`/`onError`? All events of an `Observable` sequence are already sequential, and even if we did need to synchronize we could just add the `synchronized` keyword to the methods (but we don't need to).