code: public final Object invokeNextThenAccept(InvocationContext ctx, VisitableCommand command,
                                             InvocationSuccessAction action) {
        try {
           Object rv;
           if (nextDDInterceptor != null) {
              rv = command.acceptVisitor(ctx, nextDDInterceptor);
           } else {
              rv = nextInterceptor.visitCommand(ctx, command);
           }
           if (rv instanceof InvocationStage) {
              return ((InvocationStage) rv).thenAccept(ctx, command, action);
           }
           action.accept(ctx, command, rv);
           return rv;
        } catch (Throwable throwable) {
           return new SimpleAsyncInvocationStage(throwable);
        }
     }
docs: Invoke the next interceptor, possibly with a new command, and execute an {@link InvocationCallback}
  after all the interceptors have finished successfully.
  
  <p>You need to wrap the result with {@link #makeStage(Object)} if you need to add another handler.</p>