A ModelResponseObserver conform to the Observable's Observer contract. It accepts either an Observer or three optional callbacks which correspond to the Observer methods onNext, onError, and onCompleted. The ModelResponseObserver wraps an Observer to enforce a variety of different invariants including:
- onError callback is only called once.
- onCompleted callback is only called once.