code: @Beta
    @GwtIncompatible // java.util.concurrent.ScheduledExecutorService
    @SuppressWarnings("GoodTime") // should accept a java.time.Duration
    public static <O> ListenableFuture<O> scheduleAsync(
        AsyncCallable<O> callable,
        long delay,
        TimeUnit timeUnit,
        ScheduledExecutorService executorService) {
      TrustedListenableFutureTask<O> task = TrustedListenableFutureTask.create(callable);
      final Future<?> scheduled = executorService.schedule(task, delay, timeUnit);
      task.addListener(
          new Runnable() {
            @Override
            public void run() {
              // Don't want to interrupt twice
              scheduled.cancel(false);
            }
          },
          directExecutor());
      return task;
    }
docs: Schedules {@code callable} on the specified {@code executor}, returning a {@code Future}.
  
  @throws RejectedExecutionException if the task cannot be scheduled for execution
  @since 23.0