code: public static <T> CompletableFuture<T> schedule(final long delay, final ScheduledExecutorService ex, final Supplier<T> t) {
          return Future.schedule(delay, ex, t)
                        .getFuture();
      }
docs: Schedule the population of a CompletableFuture from the provided Supplier after the specified delay. The provided ScheduledExecutorService provided the thread on which the
  Supplier will be executed.
  <pre>
  {@code
  
  CompletableFuture<String> future = CompletableFutures.schedule(10l, Executors.newScheduledThreadPool(1), ()->"hello");
  
  //CompletableFuture["hello"]
  
  }</pre>
  
  @param delay Delay after which the CompletableFuture should be populated
  @param ex ScheduledExecutorService used to execute the provided Supplier
  @param t he Supplier to execute to populate the CompletableFuture
  @return CompletableFuture populated after the specified delay