code: @CheckReturnValue
      @SchedulerSupport(SchedulerSupport.COMPUTATION)
      public final Single<T> timeout(long timeout, TimeUnit unit, SingleSource<? extends T> other) {
          ObjectHelper.requireNonNull(other, "other is null");
          return timeout0(timeout, unit, Schedulers.computation(), other);
      }
docs: Runs the current Single and if it doesn't signal within the specified timeout window, it is
  disposed and the other SingleSource subscribed to.
  <dl>
  <dt><b>Scheduler:</b></dt>
  <dd>{@code timeout} subscribes to the other SingleSource on
  the {@code computation} {@link Scheduler}.</dd>
  </dl>
  @param timeout the timeout amount
  @param unit the time unit
  @param other the other SingleSource that gets subscribed to if the current Single times out
  @return the new Single instance
  @throws NullPointerException
  if other is null, or
  if unit is null, or
  if scheduler is null
  @since 2.0