code: @NonNull
      public Disposable scheduleDirect(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) {
          final Worker w = createWorker();
  
          final Runnable decoratedRun = RxJavaPlugins.onSchedule(run);
  
          DisposeTask task = new DisposeTask(decoratedRun, w);
  
          w.schedule(task, delay, unit);
  
          return task;
      }
docs: Schedules the execution of the given task with the given time delay.
  
  <p>
  This method is safe to be called from multiple threads but there are no
  ordering guarantees between tasks.
  
  @param run the task to schedule
  @param delay the delay amount, non-positive values indicate non-delayed scheduling
  @param unit the unit of measure of the delay amount
  @return the Disposable that let's one cancel this particular delayed task.
  @since 2.0