Repository: node
Issue: error thrown in request 'error' event instead of in response 'error' event when response body length is longer than Content-Length
Labels: http

Simple example:

![企业微信截图_16197716099711](https://user-images.githubusercontent.com/3164151/116670043-db73f200-a9d1-11eb-9eb4-632d07989a8d.png)

<!--
Thank you for reporting an issue.

This issue tracker is for bugs and issues found within Node.js core.
If you require more general support please file an issue on our help
repo. https://github.com/nodejs/help


Please fill in as much of the template below as you're able.

Version: output of `node -v`
Platform: output of `uname -a` (UNIX), or output of `"$([Environment]::OSVersion | ForEach-Object VersionString) $(if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x86" })"` in PowerShell console (Windows)
Subsystem: if known, please specify affected core module name
-->

* **Version**: 12.19.0
* **Platform**: Microsoft Windows NT 10.0.19041.0 x64
* **Subsystem**:

### What steps will reproduce the bug?
run the simple server code:
```js
const http = require('http');

server = http.createServer((req, res) => {
  console.log(req.url);
  res.writeHead(200, {
    'content-length': 1
  });
  res.end('12');
})

server.listen(9999);
```

then run the client code:

```js
const http = require('http');

const req = http.request('http://localhost:9999', (res) => {
    try {
        console.log('response:', res.statusCode)
    } catch (e) {
        console.log(e)
    }
});

req.on('error', (e) => {
    console.log('request error:', e);
});

req.end();
```

then error would be thrown in request 'error' event , but intuitively, this error should be thrown in response 'error' event, or just ignore it.
<!--
Enter details about your bug, preferably a simple code snippet that can be
run using `node` directly without installing third-party dependencies.
-->

### How often does it reproduce? Is there a required condition?
everytime.

### What is the expected behavior?
The error should be thrown in response 'error' event, or just ignored.
<!--
If possible please provide textual output instead of screenshots.
-->

### What do you see instead?
The error thrown in request 'error' event.
<!--
If possible please provide textual output instead of screenshots.
-->

### Additional information
This problem is not severe, but confused, and may cause potential problem if you wrap a Promise:
```js
const http = require('http');

const p = new Promise((resl, rej) => {
    const req = http.request('http://localhost:9999', (res) => {
        try {
            console.log('response:', res.statusCode)
            resl(res);
        } catch (e) {
            console.log(e)
            rej(e);
        }
    });

    req.on('error', (e) => {
        console.log('request error:', e);
        rej(e);
    });

    req.end();
});

p.then(() => {
    console.log('resolved');
}, () => {
    console.log('rejected'); // unreachable in this situation
});
```
This is the same implementation in Axios 0.18.0

<!--
Tell us anything else you think we should know.
-->