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