1'use strict';
2
3const common = require('../common');
4const http = require('http');
5
6function request(server) {
7  http.get({
8    port: server.address().port,
9    path: '/',
10  }, (res) => {
11    res.resume();
12  });
13}
14
15{
16  const server = http.createServer((req, res) => {
17    //  Hack to not remove parser out of server.connectionList
18    //  See `freeParser` in _http_common.js
19    req.socket.parser.free = common.mustCall();
20    req.socket.on('close', common.mustCall(() => {
21      server.close();
22    }));
23    res.end('ok');
24  }).listen(0, common.mustCall(() => {
25    request(server);
26  }));
27}
28
29{
30  const server = http.createServer((req, res) => {
31    // See `freeParser` in _http_common.js
32    const { parser } = req.socket;
33    parser.free = common.mustCall(() => {
34      setImmediate(common.mustCall(() => {
35        parser.close();
36      }));
37    });
38    req.socket.on('close', common.mustCall(() => {
39      setImmediate(common.mustCall(() => {
40        server.close();
41      }));
42    }));
43    res.end('ok');
44  }).listen(0, common.mustCall(() => {
45    request(server);
46  }));
47}
48