code: @Override
      public synchronized <V> ManagedScheduledFutureTask<V> schedule(Callable<V> callable, long delay, TimeUnit unit) {
          ScheduledTask<V> task = getNewScheduledTaskFor(callable, false);
          ScheduledFuture<V> future =
                  ((ScheduledExecutorService) executor).schedule(task.callable, delay, unit);
          task.submittedScheduledTask(future);
          return task;
      }
docs: Creates and executes a ScheduledFuture that becomes enabled after the
  given delay.
  
  @param callable the function to execute
  @param delay    the time from now to delay execution
  @param unit     the time unit of the delay parameter
  @return a ScheduledFuture that can be used to extract result or cancel
  @throws java.util.concurrent.RejectedExecutionException if the task cannot be
  scheduled for execution
  @throws NullPointerException                            if callable is null