private void initialize() {
        if (initialized) {
            return;
        }

        initialized = true;
        if (cancelled) {
            assert upstream != null;
            upstream.cancel();
            return;
        }

        long demand = demand();
        if (demand > 0 && requestHeaders != null) {
            final HttpHeaders requestHeaders = this.requestHeaders;
            this.requestHeaders = null;
            //noinspection unchecked
            subscriber.onNext((I) requestHeaders);
            demand--;
        }

        if (demand > 0) {
            askUpstreamForElement();
        }
    }
Returns a new {@link DecodedStreamMessage} with the specified {@link HttpDecoder},
{@link ByteBufAllocator} and {@code byteBufConverter}.
core/src/main/java/com/linecorp/armeria/internal/common/stream/DecodedStreamMessage.java