1'use strict'; 2 3// Verifies that write callbacks are called 4 5const common = require('../common'); 6if (!common.hasCrypto) 7 common.skip('missing crypto'); 8const assert = require('assert'); 9const http2 = require('http2'); 10 11const server = http2.createServer(); 12 13server.on('stream', common.mustCall((stream) => { 14 stream.write('abc', common.mustCall(() => { 15 stream.end('xyz'); 16 })); 17 let actual = ''; 18 stream.setEncoding('utf8'); 19 stream.on('data', (chunk) => actual += chunk); 20 stream.on('end', common.mustCall(() => assert.strictEqual(actual, 'abcxyz'))); 21})); 22 23server.listen(0, common.mustCall(() => { 24 const client = http2.connect(`http://localhost:${server.address().port}`); 25 const req = client.request({ ':method': 'POST' }); 26 req.write('abc', common.mustCall(() => { 27 req.end('xyz'); 28 })); 29 let actual = ''; 30 req.setEncoding('utf8'); 31 req.on('data', (chunk) => actual += chunk); 32 req.on('end', common.mustCall(() => assert.strictEqual(actual, 'abcxyz'))); 33 req.on('close', common.mustCall(() => { 34 client.close(); 35 server.close(); 36 })); 37})); 38