I'm developing a small Chrome extension for personal use on a very specific case (website automation) but I've a problem. How can I catch a network error on a background script and call a certain function.
I've implemented this method:
chrome.webRequest.onErrorOccurred.addListener(
handleNetworkError,
{urls: ["http://*/*", "https://*/*"]
});
It catches some network errors, from what I see manly ::net
errors, DNS failing, networks changed etc.
However today I noticed that HTTP errors like:
GET https://example.com 522 (Origin Connection Time-out)
didn't trigger the listener, how can I make it work on those too?
With help of the the user @Xan, I managed to come up with this:
I assume that from the perspective of
webRequest
/ Chrome's network stack, this request actually completed. So you need to hook to some other event, e.g.Note that this event is optionally blocking: you can redirect the request if needed.
Obviously, this will create a lot of work for your extension; in the above snippet, the listener is not blocking, but if you do make it blocking it will slow down your Chrome considerably - only use it when absolutely necessary and filter by URL when appropriate.