src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError) {
        return subscribe(onNext, onError, Functions.EMPTY_ACTION, Functions.emptyConsumer());
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError) {
        return subscribe(onNext, onError, Functions.EMPTY_ACTION, Functions.emptyConsumer());
    }
Subscribes to an ObservableSource and provides callbacks to handle the items it emits and any error
notification it issues.
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code subscribe} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>

@param onNext
the {@code Consumer<T>} you have designed to accept emissions from the ObservableSource
@param onError
the {@code Consumer<Throwable>} you have designed to accept any error notification from the
ObservableSource
@return a {@link Disposable} reference with which the caller can stop receiving items before
the ObservableSource has finished sending them
@see <a href="http://reactivex.io/documentation/operators/subscribe.html">ReactiveX operators documentation: Subscribe</a>
@throws NullPointerException
if {@code onNext} is null, or
if {@code onError} is null