code: public final Object asyncInvokeNext(InvocationContext ctx, VisitableCommand command,
                                         CompletionStage<?> delay) {
        if (delay == null || CompletionStages.isCompletedSuccessfully(delay)) {
           return invokeNext(ctx, command);
        }
        return asyncValue(delay).thenApply(ctx, command, invokeNextFunction);
     }
docs: Suspend the invocation until {@code delay} completes, then if successful invoke the next interceptor.
  
  <p>If {@code delay} is null or already completed normally, immediately invoke the next interceptor in this thread.</p>
  
  <p>If {@code delay} completes exceptionally, skip the next interceptor and continue with the exception.</p>
  
  <p>You need to wrap the result with {@link #makeStage(Object)} if you need to add another handler.</p>