src/main/java/io/reactivex/Flowable.java
@BackpressureSupport(BackpressureKind.PASS_THROUGH)
    @SchedulerSupport(SchedulerSupport.NONE)
    public final void safeSubscribe(Subscriber<? super T> s) {
        ObjectHelper.requireNonNull(s, "s is null");
        if (s instanceof SafeSubscriber) {
            subscribe((SafeSubscriber<? super T>)s);
        } else {
            subscribe(new SafeSubscriber<T>(s));
        }
    }
@BackpressureSupport(BackpressureKind.PASS_THROUGH)
    @SchedulerSupport(SchedulerSupport.NONE)
    public final void safeSubscribe(Subscriber<? super T> s) {
        ObjectHelper.requireNonNull(s, "s is null");
        if (s instanceof SafeSubscriber) {
            subscribe((SafeSubscriber<? super T>)s);
        } else {
            subscribe(new SafeSubscriber<T>(s));
        }
    }
Subscribes to the current Flowable and wraps the given Subscriber into a SafeSubscriber
(if not already a SafeSubscriber) that
deals with exceptions thrown by a misbehaving Subscriber (that doesn't follow the
Reactive-Streams specification).
<dl>
<dt><b>Backpressure:</b></dt>
<dd>This operator leaves the reactive world and the backpressure behavior depends on the Subscriber's behavior.</dd>
<dt><b>Scheduler:</b></dt>
<dd>{@code safeSubscribe} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>
@param s the incoming Subscriber instance
@throws NullPointerException if s is null