private ChannelPromise getMessageFuture()

in src/main/java/com/twitter/http2/HttpStreamEncoder.java [89:123]


    private ChannelPromise getMessageFuture(
            final ChannelHandlerContext ctx,
            final ChannelPromise promise,
            final int streamId,
            HttpMessage message
    ) {
        if (message instanceof StreamedHttpMessage
                && !((StreamedHttpMessage) message).getContent().isClosed()) {
            final Pipe<HttpContent> pipe = ((StreamedHttpMessage) message).getContent();

            ChannelPromise writeFuture = ctx.channel().newPromise();
            writeFuture.addListener(new ChannelFutureListener() {
                @Override
                public void operationComplete(ChannelFuture future) throws Exception {
                    // Channel's thread
                    // First frame has been written

                    if (future.isSuccess()) {
                        pipe.receive().addListener(
                                new ChunkListener(ctx, streamId, pipe, promise));
                    } else if (future.isCancelled()) {
                        pipe.close();
                        promise.cancel(true);
                    } else {
                        pipe.close();
                        promise.setFailure(future.cause());
                    }
                }
            });

            return writeFuture;
        } else {
            return promise;
        }
    }