From ab628add287003520ea68acc6d6b69b51281deb2 Mon Sep 17 00:00:00 2001 From: Terry Chen Date: Tue, 28 Apr 2026 01:23:30 -0400 Subject: [PATCH] http2: expose writable stream state on compat response --- lib/internal/http2/compat.js | 8 ++++++++ test/parallel/test-http2-res-writable-properties.js | 3 +++ 2 files changed, 11 insertions(+) diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js index 41909ffa5756f8..86dc7dc047fd78 100644 --- a/lib/internal/http2/compat.js +++ b/lib/internal/http2/compat.js @@ -551,6 +551,10 @@ class Http2ServerResponse extends Stream { return this[kStream].writableHighWaterMark; } + get writableObjectMode() { + return this[kStream].writableObjectMode; + } + get writableFinished() { return this[kStream].writableFinished; } @@ -559,6 +563,10 @@ class Http2ServerResponse extends Stream { return this[kStream].writableLength; } + get writableNeedDrain() { + return this[kStream].writableNeedDrain; + } + set statusCode(code) { code |= 0; if (code >= 100 && code < 200) diff --git a/test/parallel/test-http2-res-writable-properties.js b/test/parallel/test-http2-res-writable-properties.js index 488cb1babf3e8a..5cee258a9f572b 100644 --- a/test/parallel/test-http2-res-writable-properties.js +++ b/test/parallel/test-http2-res-writable-properties.js @@ -7,11 +7,14 @@ const http2 = require('http2'); const server = http2.createServer(common.mustCall((req, res) => { const hwm = req.socket.writableHighWaterMark; assert.strictEqual(res.writableHighWaterMark, hwm); + assert.strictEqual(res.writableObjectMode, res.stream.writableObjectMode); + assert.strictEqual(res.writableNeedDrain, res.stream.writableNeedDrain); assert.strictEqual(res.writableLength, 0); res.write(''); const len = res.writableLength; res.write('asd'); assert.strictEqual(res.writableLength, len + 3); + assert.strictEqual(res.writableNeedDrain, res.stream.writableNeedDrain); res.end(); res.on('finish', common.mustCall(() => { assert.strictEqual(res.writableLength, 0);