code: public CompletableFuture<T> callWithQueueTimeout(Callable<CompletableFuture<T>> execution, long timeout, TimeUnit timeUnit) {
      return callWithQueueTimeout(execution, Optional.of(TimeUnit.MILLISECONDS.convert(timeout, timeUnit)));
    }
docs: Try to execute the supplier if there are enough permits available.
  If not, add the execution to a queue (if there is room).
  If the queue attempts to start the execution after the timeout
  has passed, short circuit the execution and complete the future
  exceptionally with TimeoutException
  
  @param execution - The execution of the item
  @param timeout - The time before which we'll short circuit the execution
  @param timeUnit
  @return