code: @Override
      public <T> Future<T> submit(Callable<T> task) {
          try {
              if (this.concurrentExecutor instanceof ExecutorService) {
                  return ((ExecutorService) this.concurrentExecutor).submit(task);
              } else {
                  FutureTask<T> future = new FutureTask<T>(task);
                  this.concurrentExecutor.execute(future);
                  return future;
              }
          } catch (RejectedExecutionException ex) {
              throw new TaskRejectedException("Executor [" + this.concurrentExecutor + "] did not accept task: " + task,
                      ex);
          }
      }
docs: {@inheritDoc}
  
  @see org.audit4j.core.schedule.AsyncTaskExecutor#submit(java.util.concurrent.Callable)