Repository: puppeteer
Issue: [Bug]: neither `requestfinished` nor `requestfailed` event is fired for duplicated requests
Labels: bug,confirmed,P3

### Minimal, reproducible example

```TypeScript
const browser = await puppeteer.launch({
    headless: 'new',
    executablePath: 'google-chrome',
    args: [
        '--accept-lang=en-GB',
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-dev-shm-usage',
    ],
});

const page = await browser.newPage();
await page.setRequestInterception(true);

page.on('request', (req) => console.log('onRequestStarted: ' + req.url()), req.continue());
page.on('requestfinished', (req) => console.log('onRequestFinished: ' + req.url()));
page.on('requestfailed', (req) => console.log('onRequestFailed: ' + req.url()));

await page.goto(url, {
    timeout: 60 * 1000,
    waitUntil: ['domcontentloaded'],
});
```


### Error string

no error

### Bug behavior

- [X] Flaky
- [ ] PDF

### Background

I'm tracking the number of requests/responses as part of the [custom networkidle event implementation](https://github.com/puppeteer/puppeteer/issues/1353#issuecomment-648299486). Suprisingly, I don't get any notification/event for a duplicated requests for fonts, hence the function that tracks request keep waiting indefinitely.

I've done some research. Firstly, by simple logging from handlers I identifiied the requests that cause trouble:

```
onRequestStarted: /KFOlCnqEu92Fr1MmEU9fBBc4.3170fd9aa9258fe0.woff2	onRequestFinished: /KFOlCnqEu92Fr1MmEU9fBBc4.3170fd9aa9258fe0.woff2
onRequestStarted: /KFOlCnqEu92Fr1MmEU9fBBc4.3170fd9aa9258fe0.woff2	-
onRequestStarted: /KFOlCnqEu92Fr1MmWUlfBBc4.71b2beb82c4d1389.woff2	onRequestFinished: /KFOlCnqEu92Fr1MmWUlfBBc4.71b2beb82c4d1389.woff2
onRequestStarted: /KFOlCnqEu92Fr1MmWUlfBBc4.71b2beb82c4d1389.woff2	-
onRequestStarted: /KFOmCnqEu92Fr1Mu4mxK.f2894edcf7d09d36.woff2		onRequestFinished: /KFOmCnqEu92Fr1Mu4mxK.f2894edcf7d09d36.woff2
onRequestStarted: /KFOmCnqEu92Fr1Mu4mxK.f2894edcf7d09d36.woff2		-
```

Then I ran the puppeteer in the debug mode and collected "Network" events for those requests, here's how it looks for one fornt:

```
[
    {
        "method": "Network.requestWillBeSent",
        "params": {
            "requestId": "612.29",
            "loaderId": "157BF055655BB25DB89E3FE56D8BB38B",
            "documentURL": "http://127.0.0.1:8081/workspaces/9/dashboards/604?mode=export&width=210&height=297&fullPage=true",
            "request": {
                "url": "http://127.0.0.1:8081/KFOmCnqEu92Fr1Mu4mxK.f2894edcf7d09d36.woff2",
                "method": "GET",
                "headers": {
                    "sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
                    "Referer": "http://127.0.0.1:8081/workspaces/9/dashboards/604?mode=export&width=210&height=297&fullPage=true",
                    "Origin": "http://127.0.0.1:8081",
                    "sec-ch-ua-mobile": "?0",
                    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.0.0 Safari/537.36",
                    "sec-ch-ua-platform": "\"Linux\""
                },
                "mixedContentType": "none",
                "initialPriority": "VeryHigh",
                "referrerPolicy": "strict-origin-when-cross-origin",
                "isSameSite": true
            },
            "timestamp": 323427.40607,
            "wallTime": 1704535934.256957,
            "initiator": {
                "type": "parser",
                "url": "http://127.0.0.1:8081/workspaces/9/dashboards/604?mode=export&width=210&height=297&fullPage=true",
                "lineNumber": 15,
                "columnNumber": 1
            },
            "redirectHasExtraInfo": false,
            "type": "Font",
            "frameId": "A4378E69D4BE9C3C01E05B1A2DD57AEF",
            "hasUserGesture": false
        },
        "sessionId": "CE8A4A5AF852AFED64A589E10B910D74"
    },
    {
        "method": "Network.responseReceivedExtraInfo",
        "params": {
            "requestId": "612.29",
            "blockedCookies": [],
            "headers": {
                "Content-Encoding": "gzip",
                "Content-Length": "15767",
                "Content-Type": "application/font-woff2",
                "Date": "Sat, 06 Jan 2024 10:12:14 GMT",
                "Server": "Jetty(9.4.31.v20200723)"
            },
            "resourceIPAddressSpace": "Local",
            "statusCode": 200,
            "headersText": "HTTP/1.1 200 OK\r\nDate: Sat, 06 Jan 2024 10:12:14 GMT\r\nContent-Type: application/font-woff2\r\nContent-Encoding: gzip\r\nContent-Length: 15767\r\nServer: Jetty(9.4.31.v20200723)\r\n\r\n",
            "cookiePartitionKey": "http://127.0.0.1",
            "cookiePartitionKeyOpaque": false
        },
        "sessionId": "CE8A4A5AF852AFED64A589E10B910D74"
    },
    {
        "method": "Network.responseReceived",
        "params": {
            "requestId": "612.29",
            "loaderId": "157BF055655BB25DB89E3FE56D8BB38B",
            "timestamp": 323427.519257,
            "type": "Font",
            "response": {
                "url": "http://127.0.0.1:8081/KFOmCnqEu92Fr1Mu4mxK.f2894edcf7d09d36.woff2",
                "status": 200,
                "statusText": "OK",
                "headers": {
                    "Date": "Sat, 06 Jan 2024 10:12:14 GMT",
                    "Content-Encoding": "gzip",
                    "Server": "Jetty(9.4.31.v20200723)",
                    "Content-Length": "15767",
                    "Content-Type": "application/font-woff2"
                },
                "mimeType": "application/font-woff2",
                "connectionReused": true,
                "connectionId": 39,
                "remoteIPAddress": "127.0.0.1",
                "remotePort": 8081,
                "fromDiskCache": false,
                "fromServiceWorker": false,
                "fromPrefetchCache": false,
                "encodedDataLength": 174,
                "timing": {
                    "requestTime": 323427.44247,
                    "proxyStart": -1,
                    "proxyEnd": -1,
                    "dnsStart": -1,
                    "dnsEnd": -1,
                    "connectStart": -1,
                    "connectEnd": -1,
                    "sslStart": -1,
                    "sslEnd": -1,
                    "workerStart": -1,
                    "workerReady": -1,
                    "workerFetchStart": -1,
                    "workerRespondWithSettled": -1,
                    "sendStart": 1.144,
                    "sendEnd": 1.252,
                    "pushStart": 0,
                    "pushEnd": 0,
                    "receiveHeadersStart": 2.404,
                    "receiveHeadersEnd": 2.541
                },
                "responseTime": 1.704535934295707e+12,
                "protocol": "http/1.1",
                "alternateProtocolUsage": "unspecifiedReason",
                "securityState": "secure"
            },
            "hasExtraInfo": true,
            "frameId": "A4378E69D4BE9C3C01E05B1A2DD57AEF"
        },
        "sessionId": "CE8A4A5AF852AFED64A589E10B910D74"
    }
]
```

Finally, I generated Chrome netlog and saw the following extra requests which failed:

![image](https://github.com/puppeteer/puppeteer/assets/6124091/e66a296f-1ca6-43d8-b4db-d272db258569)

![image](https://github.com/puppeteer/puppeteer/assets/6124091/f9b10f23-bc64-409d-af97-8b4b628f36f0)


Versions:

```
Puppeteer 21.7.0
Node 20.10.0
Google Chrome 120.0.6099.71
```

### Expectation

I expected to get matching finished notification for each request 

### Reality

In reality, I didn't get finished notification for some duplicated requests

### Puppeteer configuration file (if used)

_No response_

### Puppeteer version

21.7.0

### Node version

20.10.0

### Package manager

npm

### Package manager version

10.2.3

### Operating system

Linux