code: public final Object invokeNext(InvocationContext ctx, VisitableCommand command) {
        try {
           if (nextDDInterceptor != null) {
              return command.acceptVisitor(ctx, nextDDInterceptor);
           } else {
              return nextInterceptor.visitCommand(ctx, command);
           }
        } catch (Throwable throwable) {
           return new SimpleAsyncInvocationStage(throwable);
        }
     }
docs: Invoke the next interceptor, possibly with a new command.
  
  <p>Use {@link #invokeNextThenApply(InvocationContext, VisitableCommand, InvocationSuccessFunction)}
  or {@link #invokeNextThenAccept(InvocationContext, VisitableCommand, InvocationSuccessAction)} instead
  if you need to process the return value of the next interceptor.</p>
  
  <p>Note: {@code invokeNext(ctx, command)} does not throw exceptions. In order to handle exceptions from the
  next interceptors, you <em>must</em> use
  {@link #invokeNextAndHandle(InvocationContext, VisitableCommand, InvocationFinallyFunction)},
  {@link #invokeNextAndFinally(InvocationContext, VisitableCommand, InvocationFinallyAction)},
  or {@link #invokeNextAndExceptionally(InvocationContext, VisitableCommand, InvocationExceptionFunction)}.</p>