From 9634d13be2906b2a5dee1678a290a47107d99ca3 Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Tue, 9 Jan 2018 22:59:21 -0800 Subject: [PATCH] fix: requestInterception should play nicely with canceled redirects (#1758) Since interception events and `loadingFailed` events come from different processes and are not serialized, we might get `loadingFailed` event and a subsequent outdated `requestIntercepted`. Short-term, this patch stops assuming that interception events are aligned with `loadingFailed`. Long-term, this will be resolved as @caseq completes network servicification effort in chromium. Fixes #880. --- lib/NetworkManager.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/NetworkManager.js b/lib/NetworkManager.js index 8f17dfb5c62..64e3b129e28 100644 --- a/lib/NetworkManager.js +++ b/lib/NetworkManager.js @@ -151,9 +151,10 @@ class NetworkManager extends EventEmitter { if (event.redirectUrl) { const request = this._interceptionIdToRequest.get(event.interceptionId); - console.assert(request, 'INTERNAL ERROR: failed to find request for interception redirect.'); - this._handleRequestRedirect(request, event.responseStatusCode, event.responseHeaders); - this._handleRequestStart(request._requestId, event.interceptionId, event.redirectUrl, event.resourceType, event.request, event.frameId); + if (request) { + this._handleRequestRedirect(request, event.responseStatusCode, event.responseHeaders); + this._handleRequestStart(request._requestId, event.interceptionId, event.redirectUrl, event.resourceType, event.request, event.frameId); + } return; } const requestHash = generateRequestHash(event.request);