code: @CheckReturnValue
      @BackpressureSupport(BackpressureKind.ERROR)
      @SchedulerSupport(SchedulerSupport.CUSTOM)
      public final Flowable<T> throttleFirst(long skipDuration, TimeUnit unit, Scheduler scheduler) {
          ObjectHelper.requireNonNull(unit, "unit is null");
          ObjectHelper.requireNonNull(scheduler, "scheduler is null");
          return RxJavaPlugins.onAssembly(new FlowableThrottleFirstTimed<T>(this, skipDuration, unit, scheduler));
      }
docs: Returns a Flowable that emits only the first item emitted by the source Publisher during sequential
  time windows of a specified duration, where the windows are managed by a specified Scheduler.
  <p>
  This differs from {@link #throttleLast} in that this only tracks the passage of time whereas
  {@link #throttleLast} ticks at scheduled intervals.
  <p>
  <img width="640" height="305" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/throttleFirst.s.png" alt="">
  <dl>
  <dt><b>Backpressure:</b></dt>
  <dd>This operator does not support backpressure as it uses time to control data flow.</dd>
  <dt><b>Scheduler:</b></dt>
  <dd>You specify which {@link Scheduler} this operator will use.</dd>
  </dl>
  
  @param skipDuration
  time to wait before emitting another item after emitting the last item
  @param unit
  the unit of time of {@code skipDuration}
  @param scheduler
  the {@link Scheduler} to use internally to manage the timers that handle timeout for each
  event
  @return a Flowable that performs the throttle operation
  @see <a href="http://reactivex.io/documentation/operators/sample.html">ReactiveX operators documentation: Sample</a>
  @see <a href="https://github.com/ReactiveX/RxJava/wiki/Backpressure">RxJava wiki: Backpressure</a>