This seems to replicate `SafeObserver` functionality: https://github.com/Netflix/RxJava/blob/master/rxjava-core/src/main/java/rx/operators/SafeObserver.java?source=cc

I tend to prefer not having it use inheritance as it's confusing to extend from this and then need to implement other method names than a normal `Observer`, otherwise the methods could be over-written by copy/paste and defeat the purpose. Thus I prefer composition, and it fits the Rx model better which uses `create` methods and other such things rather than inheritance. 

This logic also is wanted: https://github.com/Netflix/RxJava/blob/master/rxjava-core/src/main/java/rx/operators/SafeObserver.java?source=cc#L103

This however is possibly a bug: https://github.com/Netflix/RxJava/blob/master/rxjava-core/src/main/java/rx/operators/SafeObserver.java?source=cc#L79

This may be a misinterpretation of Rx Design Guideline 4.3, but note the bold text in the following:

> 4.3. Assume resources are cleaned up after an OnError or OnCompleted message
> Paragraph 4.1 states that no more messages should arrive after an OnError or OnCompleted message. This makes it possible to cleanup any resource used by the subscription the moment an OnError or OnCompleted arrives. Cleaning up resources immediately will make sure that any side-effect occurs in a predictable fashion. It also makes sure that the runtime can reclaim these resources.

> In this sample the Using operator creates a resource that will be disposed upon unsubscription. **The Rx contract for cleanup ensures that unsubscription will be called automatically once an OnError or OnCompleted message is sent**.


And we can provide better constructors and factory methods: https://github.com/Netflix/RxJava/blob/master/rxjava-core/src/main/java/rx/operators/SafeObserver.java?source=cc#L64

Is this intended to be part of the public API or just for internal operators? Everything inside `rx.operators` is considered implementation details and not part of the public API. Note how the Javadoc excludes the `rx.operators` package: http://netflix.github.io/RxJava/javadoc/

@headinthebox I would appreciate your guidance on this.