diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js index 41909ffa5756f8..ec40c136a1a062 100644 --- a/lib/internal/http2/compat.js +++ b/lib/internal/http2/compat.js @@ -555,6 +555,14 @@ class Http2ServerResponse extends Stream { return this[kStream].writableFinished; } + get writableObjectMode() { + return this[kStream].writableObjectMode; + } + + get writableNeedDrain() { + return this[kStream].writableNeedDrain; + } + get writableLength() { return this[kStream].writableLength; } diff --git a/test/fixtures/http2/test-writable-props.js b/test/fixtures/http2/test-writable-props.js new file mode 100644 index 00000000000000..f3fd88c5c7d307 --- /dev/null +++ b/test/fixtures/http2/test-writable-props.js @@ -0,0 +1,31 @@ +'use strict'; + +const { createServer } = require('http2'); +const { mustCall } = require('../common'); + +const server = createServer(); +server.on('stream', (stream) => { + // writableObjectMode and writableNeedDrain should be defined (boolean) + console.log('writableObjectMode:', stream.writableObjectMode); + console.log('writableNeedDrain:', stream.writableNeedDrain); + if (typeof stream.writableObjectMode !== 'boolean') { + throw new Error(`writableObjectMode should be boolean, got ${stream.writableObjectMode}`); + } + if (typeof stream.writableNeedDrain !== 'boolean') { + throw new Error(`writableNeedDrain should be boolean, got ${stream.writableNeedDrain}`); + } + stream.respond(); + stream.end('ok'); +}); +server.listen(0, mustCall(() => { + const client = require('http2').connect(`http://localhost:${server.address().port}`); + const req = client.request(); + req.on('response', () => { + req.on('data', () => {}); + req.on('end', () => { + client.close(); + server.close(); + console.log('PASS: writableObjectMode and writableNeedDrain are booleans'); + }); + }); +})); diff --git a/test/parallel/test-http2-res-writable-properties.js b/test/parallel/test-http2-res-writable-properties.js index 488cb1babf3e8a..e05ed87da3e7a2 100644 --- a/test/parallel/test-http2-res-writable-properties.js +++ b/test/parallel/test-http2-res-writable-properties.js @@ -8,6 +8,8 @@ const server = http2.createServer(common.mustCall((req, res) => { const hwm = req.socket.writableHighWaterMark; assert.strictEqual(res.writableHighWaterMark, hwm); assert.strictEqual(res.writableLength, 0); + assert.strictEqual(typeof res.writableObjectMode, 'boolean'); + assert.strictEqual(typeof res.writableNeedDrain, 'boolean'); res.write(''); const len = res.writableLength; res.write('asd');