code: @CheckReturnValue
      @BackpressureSupport(BackpressureKind.PASS_THROUGH)
      @SchedulerSupport(SchedulerSupport.CUSTOM)
      public final Flowable<T> subscribeOn(@NonNull Scheduler scheduler) {
          ObjectHelper.requireNonNull(scheduler, "scheduler is null");
          return subscribeOn(scheduler, !(this instanceof FlowableCreate));
      }
docs: Asynchronously subscribes Subscribers to this Publisher on the specified {@link Scheduler}.
  <p>
  If there is a {@link #create(FlowableOnSubscribe, BackpressureStrategy)} type source up in the
  chain, it is recommended to use {@code subscribeOn(scheduler, false)} instead
  to avoid same-pool deadlock because requests may pile up behind an eager/blocking emitter.
  <p>
  <img width="640" height="305" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/subscribeOn.png" alt="">
  <dl>
  <dt><b>Backpressure:</b></dt>
  <dd>The operator doesn't interfere with backpressure which is determined by the source {@code Publisher}'s backpressure
  behavior.</dd>
  <dt><b>Scheduler:</b></dt>
  <dd>You specify which {@link Scheduler} this operator will use.</dd>
  </dl>
  
  @param scheduler
  the {@link Scheduler} to perform subscription actions on
  @return the source Publisher modified so that its subscriptions happen on the
  specified {@link Scheduler}
  @see <a href="http://reactivex.io/documentation/operators/subscribeon.html">ReactiveX operators documentation: SubscribeOn</a>
  @see <a href="http://www.grahamlea.com/2014/07/rxjava-threading-examples/">RxJava Threading Examples</a>
  @see #observeOn
  @see #subscribeOn(Scheduler, boolean)