code: private CompletableFuture<Void> runAsync(RunnableWithException operation, String... segmentNames) {
          return supplyAsync(() -> {
              operation.run();
              return null;
          }, segmentNames);
      }
docs: Executes the given RunnableWithException asynchronously and returns a CompletableFuture that will be completed
  when the Runnable completes.
  @param operation    The RunnableWithException to execute.
  @param segmentNames The names of the Segments involved in this operation (for sequencing purposes).