code: public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit) {
      Objects.requireNonNull(unit);
      if (result == null)
        whenComplete(
            new Canceller(Delayer.delay(new DelayedCompleter<T>(this, value), timeout, unit)));
      return this;
    }
docs: Completes this CompletableFuture with the given value if not otherwise completed before the
  given timeout.
  
  @param value the value to use upon timeout
  @param timeout how long to wait before completing normally with the given value, in units of
  {@code unit}
  @param unit a {@code TimeUnit} determining how to interpret the {@code timeout} parameter
  @return this CompletableFuture
  @since 9