code: public<V> Future<V> submit(Callable<V> task)
      {
          Preconditions.checkState(isOpen.get(), "CloseableExecutorService is closed");
  
          InternalFutureTask<V> futureTask = new InternalFutureTask<V>(new FutureTask<V>(task));
          executorService.execute(futureTask);
          return futureTask;
      }
docs: Submits a value-returning task for execution and returns a Future
  representing the pending results of the task.  Upon completion,
  this task may be taken or polled.
  
  @param task the task to submit
  @return a future to watch the task