code: private <R> CompletableFuture<R> supplyAsync(Callable<R> operation, String... segmentNames) {
          Exceptions.checkNotClosed(this.closed.get(), this);
          return this.taskProcessor.add(Arrays.asList(segmentNames), () -> execute(operation));
      }
docs: Executes the given Callable asynchronously and returns a CompletableFuture that will be completed with the result.
  @param operation    The Callable to execute.
  @param segmentNames The names of the Segments involved in this operation (for sequencing purposes).