docs: public static <R> R join(CompletionStage<R> stage) {
        try {
           return CompletableFutures.await(stage.toCompletableFuture());
        } catch (ExecutionException e) {
           throw new CompletionException(e.getCause());
        } catch (InterruptedException e) {
           throw new CompletionException(e);
        }
     }