docs: public static Object delayedValue(CompletionStage<Void> stage, Object syncValue, Throwable throwable) {
        if (throwable == null) {
           return delayedValue(stage, syncValue);
        }
        if (stage != null) {
           CompletableFuture<?> future = stage.toCompletableFuture();
           if (!future.isDone() || future.isCompletedExceptionally()) {
              return asyncValue(
                    stage.handle((ignore, t) -> {
                       if (t != null) {
                          throwable.addSuppressed(t);
                       }
                       return null;
                    }).thenCompose(ignore -> CompletableFutures.completedExceptionFuture(throwable))
              );
           }
        }
        return new SimpleAsyncInvocationStage(throwable);
     }