src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.COMPUTATION)
    public final Observable<T> timeout(long timeout, TimeUnit timeUnit, ObservableSource<? extends T> other) {
        ObjectHelper.requireNonNull(other, "other is null");
        return timeout0(timeout, timeUnit, other, Schedulers.computation());
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.COMPUTATION)
    public final Observable<T> timeout(long timeout, TimeUnit timeUnit, ObservableSource<? extends T> other) {
        ObjectHelper.requireNonNull(other, "other is null");
        return timeout0(timeout, timeUnit, other, Schedulers.computation());
    }
Returns an Observable that mirrors the source ObservableSource but applies a timeout policy for each emitted
item. If the next item isn't emitted within the specified timeout duration starting from its predecessor,
the source ObservableSource is disposed and resulting ObservableSource begins instead
to mirror a fallback ObservableSource.
<p>
<img width="640" height="305" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/timeout.2.png" alt="">
<dl>
<dt><b>Scheduler:</b></dt>
<dd>This version of {@code timeout} operates by default on the {@code computation} {@link Scheduler}.</dd>
</dl>

@param timeout
maximum duration between items before a timeout occurs
@param timeUnit
the unit of time that applies to the {@code timeout} argument
@param other
the fallback ObservableSource to use in case of a timeout
@return the source ObservableSource modified to switch to the fallback ObservableSource in case of a timeout
@see <a href="http://reactivex.io/documentation/operators/timeout.html">ReactiveX operators documentation: Timeout</a>