code: public static <T> CompletableFuture<T> delayedFuture(final Supplier<CompletableFuture<T>> task,
                                                           final long delay,
                                                           final ScheduledExecutorService executorService) {
          return delayedFuture(Duration.ofMillis(delay), executorService)
                  .thenCompose(v -> task.get());
      }
docs: Executes the asynchronous task after the specified delay.
  
  @param task            Asynchronous task.
  @param delay           Delay in milliseconds.
  @param executorService Executor on which to execute the task.
  @param <T>             Type parameter.
  @return A CompletableFuture that will be completed with the result of the given task.