src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final <U, V> Observable<T> delay(ObservableSource<U> subscriptionDelay,
            Function<? super T, ? extends ObservableSource<V>> itemDelay) {
        return delaySubscription(subscriptionDelay).delay(itemDelay);
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final <U, V> Observable<T> delay(ObservableSource<U> subscriptionDelay,
            Function<? super T, ? extends ObservableSource<V>> itemDelay) {
        return delaySubscription(subscriptionDelay).delay(itemDelay);
    }
Returns an Observable that delays the subscription to and emissions from the source ObservableSource via another
ObservableSource on a per-item basis.
<p>
<img width="640" height="450" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/delay.oo.png" alt="">
<p>
<em>Note:</em> the resulting ObservableSource will immediately propagate any {@code onError} notification
from the source ObservableSource.
<dl>
<dt><b>Scheduler:</b></dt>
<dd>This version of {@code delay} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>

@param <U>
the subscription delay value type (ignored)
@param <V>
the item delay value type (ignored)
@param subscriptionDelay
a function that returns an ObservableSource that triggers the subscription to the source ObservableSource
once it emits any item
@param itemDelay
a function that returns an ObservableSource for each item emitted by the source ObservableSource, which is
then used to delay the emission of that item by the resulting ObservableSource until the ObservableSource
returned from {@code itemDelay} emits an item
@return an Observable that delays the subscription and emissions of the source ObservableSource via another
ObservableSource on a per-item basis
@see <a href="http://reactivex.io/documentation/operators/delay.html">ReactiveX operators documentation: Delay</a>