@UnstableApi
    static <T> StreamMessage<T> of(CompletionStage<? extends Publisher<? extends T>> stage) {
        requireNonNull(stage, "stage");

        final DeferredStreamMessage<T> deferred = new DeferredStreamMessage<>();
        //noinspection unchecked
        deferred.delegateOnCompletion((CompletionStage<? extends Publisher<T>>) stage);
        return deferred;
    }
Creates a new {@link StreamMessage} that delegates to the {@link StreamMessage} produced by the specified
{@link CompletionStage}. If the specified {@link CompletionStage} fails, the returned
{@link StreamMessage} will be closed with the same cause as well.

@param stage the {@link CompletionStage} which will produce the actual {@link StreamMessage}
core/src/main/java/com/linecorp/armeria/common/stream/StreamMessage.java