1'use strict';
2
3const common = require('../common');
4const net = require('net');
5
6function barrier(count, cb) {
7  return function() {
8    if (--count === 0)
9      cb();
10  };
11}
12
13const server = net.createServer();
14server.listen(0, common.mustCall(function() {
15  const port = server.address().port;
16  const conn = net.createConnection(port);
17  const connok = barrier(2, () => conn.resetAndDestroy());
18  conn.on('close', common.mustCall());
19  server.on('connection', (socket) => {
20    connok();
21    socket.on('error', common.expectsError({
22      code: 'ECONNRESET',
23      message: 'read ECONNRESET',
24      name: 'Error'
25    }));
26    server.close();
27  });
28  conn.on('connect', connok);
29}));
30