1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6const assert = require('assert'); 7const http2 = require('http2'); 8const net = require('net'); 9 10const { 11 HTTP2_HEADER_CONTENT_TYPE 12} = http2.constants; 13 14const server = http2.createServer(); 15server.on('stream', common.mustCall((stream) => { 16 stream.on('error', (err) => assert.strictEqual(err.code, 'ECONNRESET')); 17 stream.respondWithFile(process.execPath, { 18 [HTTP2_HEADER_CONTENT_TYPE]: 'application/octet-stream' 19 }); 20})); 21 22server.listen(0, common.mustCall(() => { 23 const client = http2.connect(`http://localhost:${server.address().port}`); 24 const req = client.request(); 25 26 req.on('response', common.mustCall()); 27 req.once('data', common.mustCall(() => { 28 net.Socket.prototype.destroy.call(client.socket); 29 server.close(); 30 })); 31 req.end(); 32})); 33