src/main/java/io/reactivex/Flowable.java
@CheckReturnValue
    @BackpressureSupport(BackpressureKind.FULL)
    @SchedulerSupport(SchedulerSupport.CUSTOM)
    public final Flowable<T> observeOn(Scheduler scheduler) {
        return observeOn(scheduler, false, bufferSize());
    }
@CheckReturnValue
    @BackpressureSupport(BackpressureKind.FULL)
    @SchedulerSupport(SchedulerSupport.CUSTOM)
    public final Flowable<T> observeOn(Scheduler scheduler) {
        return observeOn(scheduler, false, bufferSize());
    }
@ CheckReturnValue @ BackpressureSupport ( BackpressureKind . FULL ) @ SchedulerSupport ( SchedulerSupport . CUSTOM ) public final Flowable < T > observeOn ( Scheduler scheduler ) { return observeOn ( scheduler , false , bufferSize ( ) ) ; }
Modifies a Publisher to perform its emissions and notifications on a specified {@link Scheduler},
asynchronously with a bounded buffer of {@link #bufferSize()} slots.

<p>Note that onError notifications will cut ahead of onNext notifications on the emission thread if Scheduler is truly
asynchronous. If strict event ordering is required, consider using the {@link #observeOn(Scheduler, boolean)} overload.
<p>
<img width="640" height="308" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/observeOn.png" alt="">
<dl>
<dt><b>Backpressure:</b></dt>
<dd>This operator honors backpressure from downstream and expects it from the source {@code Publisher}. Violating this
expectation will lead to {@code MissingBackpressureException}. This is the most common operator where the exception
pops up; look for sources up the chain that don't support backpressure,
such as {@code interval}, {@code timer}, {code PublishSubject} or {@code BehaviorSubject} and apply any
of the {@code onBackpressureXXX} operators <strong>before</strong> applying {@code observeOn} itself.</dd>
<dt><b>Scheduler:</b></dt>
<dd>You specify which {@link Scheduler} this operator will use.</dd>
</dl>

@param scheduler
the {@link Scheduler} to notify {@link Subscriber}s on
@return the source Publisher modified so that its {@link Subscriber}s are notified on the specified
{@link Scheduler}
@see <a href="http://reactivex.io/documentation/operators/observeon.html">ReactiveX operators documentation: ObserveOn</a>
@see <a href="http://www.grahamlea.com/2014/07/rxjava-threading-examples/">RxJava Threading Examples</a>
@see #subscribeOn
@see #observeOn(Scheduler, boolean)
@see #observeOn(Scheduler, boolean, int)
Modifies a Publisher to perform its emissions and notifications on a specified { @link Scheduler } asynchronously with a bounded buffer of { @link #bufferSize () } slots .