code: protected <T> Future<T> invokeSubmit(ExecutorService executor, Callable<T> task) {
      return executor.submit(wrapTask(task));
    }
docs: Override this to customize how the waiting task is started in the background.
  
  @param <T> the type of the task
  @param executor the executor service to submit the task on
  @param task the task to be submitted
  @return the future of the task