Básicamente, necesito detener una solicitud HTTP, enviarla a una aplicación para determinar el clima o no, debe bloquearse y luego tomar la acción adecuada. Una versión simplificada del código sería algo como:
chrome.webRequest.onBeforeSendHeaders.addListener( async details => { let policy = await getPolicy(details); return {cancel: result} }, {urls: ["<all_urls>"]}, ["requestHeaders", "blocking"] );con la función getPolicy enviando la información a un servidor de políticas para determinar el clima o no para bloquear la solicitud y luego devolver un resultado booleano. El problema se reduce a que mientras espero el resultado de una política, el oyente no continúa reteniendo la solicitud, sino que solo permite que pasen todas las solicitudes antes de que se devuelva un resultado. Basé este código actual en la pregunta similar aquí: https://stackoverflow.com/a/57301607/16531716 Sin embargo, esa respuesta no parece funcionar. (Estoy usando Manifest V2 porque esa es la única forma en que puedo usar el permiso de bloqueo. MV2 normalmente no admite operaciones asíncronas, pero también estoy usando el módulo Polyfill de Mozilla para agregarlas, así que ese no es el problema)