static HttpResponse of(ResponseHeaders headers, Publisher<? extends HttpObject> publisher) {
        requireNonNull(headers, "headers");
        requireNonNull(publisher, "publisher");
        return new StreamMessageBasedHttpResponse(
                SurroundingPublisher.of(headers, publisher, unused -> null));
    }
Creates a new HTTP response with the specified headers whose stream is produced from an existing
{@link Publisher}.

<p>Note that the {@link HttpObject}s in the {@link Publisher} are not released when
{@link Subscription#cancel()} or {@link #abort()} is called. You should add a hook in order to
release the elements. See {@link PublisherBasedStreamMessage} for more information.
core/src/main/java/com/linecorp/armeria/common/HttpResponse.java