¿Es posible trabajar con async/await en webRequest.onBeforeRequest de la API de Chrome?
Lo siguiente funciona; De "trabajar" quiero decir que bloquea/cancela la solicitud como esperaba.
chrome.webRequest.onBeforeRequest.addListener( function (details) { console.log("URL intercepted:", {url: details.url, type: details.type,}); let match = details.url.match(/:\/\/(www\.)?someSiteThatIWantAvoidRawIp\.org(\/)?$/); // you are accessing this url on your chorme if (match) { console.log("URL blocked:", { url: details.url, type: details.type, match: match, }); return { cancel: true }; } }, { urls: [ "<all_urls>" ], types: ["main_frame",] }, ["blocking",] );Sin embargo, lo siguiente no funciona; Se supone que debe bloquear/cancelar la solicitud después de esperar, pero la cancelación no funciona pero la página aparece sin un error de conexión.
chrome.webRequest.onBeforeRequest.addListener( async function (details) { console.log("URL intercepted:", {url: details.url, type: details.type,}); let match = details.url.match(/:\/\/(www\.)?someSiteThatIWantAvoidRawIp\.org(\/)?$/); let ip = await axios.get('https://someSiteThatChecksMyIp.org', {}) // this gets my ip .then(r => { console.log(r); return r.data; }) .catch(e => { console.log(e); }); if (match) { if (ip == "123.123.123.123") // assume my raw ip { console.log("URL blocked:", { url: details.url, type: details.type, match: match, }); return { cancel: true }; } } }, { urls: [ "<all_urls>" ], types: ["main_frame",] }, ["blocking",] );¿Qué es incorrecto con mi configuración? Gracias.