Repository: node
Issue: SIGTERM event received and keep accepting new requests
Labels: http

<!--
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**: 14.15.5
* **Platform**: Mac OS and Linux
* **Subsystem**: 

### What steps will reproduce the bug?

1. Create a minimal express POC with a basic route, sending response after 30s using seTimeout.
2. Send an HTTP request to this endpoint. And wait.
3. Meanwhile, track the PID and kill it via the Terminal.
4. Try to send another HTTP request and get no response - good.
5. Wait that the first request that was sent eventually be returned.
6. Now you shouldn't be able to send another requests and the process should be turned off,
however, you still have a gap of 2-5 seconds that you do able to thread another HTTP request.
7. So send it, and now you can wait more 30s to the second request to return. And so for and so on.


### How often does it reproduce? Is there a required condition?
It will happen all the time you just need to send a second request in the gap between the first one returns and the process has killed (2-5 seconds from my tests)..

### What is the expected behavior?
When SIGTERM received, the process shouldn't receive any HTTP request,
by the time the request was handled, the process should be closed immediately and not have a gap of 2-5 seconds.
If for example you send a SIGTERM when there is no pending HTTP request, the process will be closed immediately, but in the example I have provided it won't - there will be that gap.


<!--
If possible please provide textual output instead of screenshots.
-->

### What do you see instead?
I can thread more HTTP requests, as how many as I want, as long as I wait for the previous request to end.

<!--
If possible please provide textual output instead of screenshots.
-->

### Additional information
K8S can send SIGINT and shuts the whole process while there active HTTP requests processing.
This can cause severe issues. Is this a bug, or something that I didn't use properly?

Full code:

```
const express = require('express')
const app = express()
const port = 3333

app.get('/', (req, res) => {
  setTimeout(() => {
    res.send('Welcome! after delay...')
  }, 30000);
})

const server = app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

process.on('SIGTERM', () => {
  console.log(`[SIGTERM received]`)
  console.log(`[closing http server]`)
  server.close(() => {
    console.log(`[Http server closed]`)
    process.exit(0)
  })
})
```



<!--
Tell us anything else you think we should know.
-->