1'use strict';
2
3const common = require('../common');
4if (!common.hasCrypto)
5  common.skip('missing crypto');
6
7const assert = require('assert');
8const net = require('net');
9const tls = require('tls');
10
11const server = net.createServer((c) => {
12  c.end();
13}).listen(common.mustCall(() => {
14  const port = server.address().port;
15
16  const socket = new net.Socket();
17
18  let errored = false;
19  tls.connect({ socket })
20    .once('error', common.mustCall((e) => {
21      assert.strictEqual(e.code, 'ECONNRESET');
22      assert.strictEqual(e.path, undefined);
23      assert.strictEqual(e.host, undefined);
24      assert.strictEqual(e.port, undefined);
25      assert.strictEqual(e.localAddress, undefined);
26      errored = true;
27      server.close();
28    }))
29    .on('close', common.mustCall(() => {
30      assert.strictEqual(errored, true);
31    }));
32
33  socket.connect(port);
34}));
35