1'use strict';
2
3const common = require('../common');
4const http = require('http');
5const assert = require('assert');
6
7{
8  const server = http.createServer(common.mustCall(function(req, res) {
9    req.on('aborted', common.mustCall(function() {
10      assert.strictEqual(this.aborted, true);
11    }));
12    req.on('error', common.mustCall(function(err) {
13      assert.strictEqual(err.code, 'ECONNRESET');
14      assert.strictEqual(err.message, 'aborted');
15      server.close();
16    }));
17    assert.strictEqual(req.aborted, false);
18    res.write('hello');
19  }));
20
21  server.listen(0, common.mustCall(() => {
22    const req = http.get({
23      port: server.address().port,
24      headers: { connection: 'keep-alive' }
25    }, common.mustCall((res) => {
26      res.on('aborted', common.mustCall(() => {
27        assert.strictEqual(res.aborted, true);
28      }));
29      res.on('error', common.expectsError({
30        code: 'ECONNRESET',
31        message: 'aborted'
32      }));
33      req.abort();
34    }));
35  }));
36}
37
38{
39  // Don't crash if no 'error' handler on server request.
40
41  const server = http.createServer(common.mustCall(function(req, res) {
42    req.on('aborted', common.mustCall(function() {
43      assert.strictEqual(this.aborted, true);
44      server.close();
45    }));
46    assert.strictEqual(req.aborted, false);
47    res.write('hello');
48  }));
49
50  server.listen(0, common.mustCall(() => {
51    const req = http.get({
52      port: server.address().port,
53      headers: { connection: 'keep-alive' }
54    }, common.mustCall((res) => {
55      res.on('aborted', common.mustCall(() => {
56        assert.strictEqual(res.aborted, true);
57      }));
58      req.abort();
59    }));
60  }));
61}
62