code: @CheckReturnValue
      @BackpressureSupport(BackpressureKind.FULL)
      @SchedulerSupport(SchedulerSupport.NONE)
      public final <U> Flowable<T> delay(final Function<? super T, ? extends Publisher<U>> itemDelayIndicator) {
          ObjectHelper.requireNonNull(itemDelayIndicator, "itemDelayIndicator is null");
          return flatMap(FlowableInternalHelper.itemDelay(itemDelayIndicator));
      }
docs: Returns a Flowable that delays the emissions of the source Publisher via another Publisher on a
  per-item basis.
  <p>
  <img width="640" height="450" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/delay.o.png" alt="">
  <p>
  <em>Note:</em> the resulting Publisher will immediately propagate any {@code onError} notification
  from the source Publisher.
  <dl>
  <dt><b>Backpressure:</b></dt>
  <dd>The operator doesn't interfere with the backpressure behavior which is determined by the source {@code Publisher}.
  All of the other {@code Publisher}s supplied by the function are consumed
  in an unbounded manner (i.e., no backpressure applied to them).</dd>
  <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 item delay value type (ignored)
  @param itemDelayIndicator
  a function that returns a Publisher for each item emitted by the source Publisher, which is
  then used to delay the emission of that item by the resulting Publisher until the Publisher
  returned from {@code itemDelay} emits an item
  @return a Flowable that delays the emissions of the source Publisher via another Publisher on a
  per-item basis
  @see <a href="http://reactivex.io/documentation/operators/delay.html">ReactiveX operators documentation: Delay</a>