src/main/java/io/reactivex/internal/observers/BasicFuseableObserver.java
protected final int transitiveBoundaryFusion(int mode) {
        QueueDisposable<T> qd = this.qd;
        if (qd != null) {
            if ((mode & BOUNDARY) == 0) {
                int m = qd.requestFusion(mode);
                if (m != NONE) {
                    sourceMode = m;
                }
                return m;
            }
        }
        return NONE;
    }
protected final int transitiveBoundaryFusion(int mode) {
        QueueDisposable<T> qd = this.qd;
        if (qd != null) {
            if ((mode & BOUNDARY) == 0) {
                int m = qd.requestFusion(mode);
                if (m != NONE) {
                    sourceMode = m;
                }
                return m;
            }
        }
        return NONE;
    }
Calls the upstream's QueueDisposable.requestFusion with the mode and
saves the established mode in {@link #sourceMode} if that mode doesn't
have the {@link QueueDisposable#BOUNDARY} flag set.
<p>
If the upstream doesn't support fusion ({@link #qd} is null), the method
returns {@link QueueDisposable#NONE}.
@param mode the fusion mode requested
@return the established fusion mode