src/main/java/io/reactivex/Single.java
@CheckReturnValue
    @NonNull
    @SchedulerSupport(SchedulerSupport.CUSTOM)
    public final Single<T> delay(final long time, final TimeUnit unit, final Scheduler scheduler, boolean delayError) {
        ObjectHelper.requireNonNull(unit, "unit is null");
        ObjectHelper.requireNonNull(scheduler, "scheduler is null");
        return RxJavaPlugins.onAssembly(new SingleDelay<T>(this, time, unit, scheduler, delayError));
    }
@CheckReturnValue
    @NonNull
    @SchedulerSupport(SchedulerSupport.CUSTOM)
    public final Single<T> delay(final long time, final TimeUnit unit, final Scheduler scheduler, boolean delayError) {
        ObjectHelper.requireNonNull(unit, "unit is null");
        ObjectHelper.requireNonNull(scheduler, "scheduler is null");
        return RxJavaPlugins.onAssembly(new SingleDelay<T>(this, time, unit, scheduler, delayError));
    }
Delays the emission of the success or error signal from the current Single by the specified amount.
<p>
<img width="640" height="457" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/Single.delay.se.png" alt="">
<dl>
<dt><b>Scheduler:</b></dt>
<dd>you specify the {@link Scheduler} where the non-blocking wait and emission happens</dd>
</dl>
<p>History: 2.1.5 - experimental
@param time the amount of time the success or error signal should be delayed for
@param unit the time unit
@param scheduler the target scheduler to use for the non-blocking wait and emission
@param delayError if true, both success and error signals are delayed. if false, only success signals are delayed.
@return the new Single instance
@throws NullPointerException
if unit is null, or
if scheduler is null
@since 2.2