public static <R extends ConversationMessage> ConversationReply<R> ofCompletableFuture(CompletableFuture<R> futureReply) {
        Objects.requireNonNull(futureReply, "futureReply");
        return new ConversationReply<>(Promise.wrapFuture(futureReply));
    }
Creates a new {@link ConversationReply}.

<p>Bear in mind the reply will only be send once the future completes. The timeout value on
"other other end" may need to take this into account.</p>

@param futureReply the future reply
@param <R> the type
@return the new reply encapsulation
helper/src/main/java/me/lucko/helper/messaging/conversation/ConversationReply.java