private Future<?> runWithErrorHandling(final ExecutorService executorService, final Stage task) {
    return executorService.submit(
        () -> {
          Span taskSpan = null;
          if (tracingEnabled) {
            taskSpan =
                tracer
                    .spanBuilder(task.getName())
                    .setAttribute("pipeline", name)
                    .setSpanKind(SpanKind.INTERNAL)
                    .startSpan();
          }
          final Thread thread = Thread.currentThread();
          final String originalName = thread.getName();
          try {
            thread.setName(originalName + " (" + task.getName() + ")");
            task.run();
          } catch (final Throwable t) {
            if (tracingEnabled) {
              taskSpan.setStatus(StatusCode.ERROR);
            }
            if (t instanceof CompletionException
                || t instanceof CancellationException
                || t instanceof AsyncOperationException) {
              LOG.trace("Unhandled exception in pipeline. Aborting.", t);
            } else {
              LOG.info(
                  LogUtil.summarizeBesuStackTrace(
                      "Unexpected exception in pipeline. Aborting.", t));
              LOG.debug("Unexpected exception in pipeline. Aborting.", t);
            }
            try {
              abort(t);
            } catch (final Throwable t2) {
              // Seems excessive but exceptions that propagate out of this method won't be logged
              // because the executor just completes the future exceptionally, and we never
              // need to call get on it which would normally expose the error.
              LOG.error("Failed to abort pipeline after error", t2);
            }
          } finally {
            if (tracingEnabled) {
              taskSpan.end();
            }
            thread.setName(originalName);
          }
        });
  }
Abort execution of this pipeline. The future returned by {@link #start(ExecutorService)} will
be completed with a {@link CancellationException}.

<p>A best effort is made to halt all processing by the pipeline immediately by interrupting
each execution thread and pipes connecting each stage will no longer accept or provide further
items.
services/pipeline/src/main/java/org/hyperledger/besu/services/pipeline/Pipeline.java