WebRequest.onBeforeRequest Asynchronous inspección de URL utilizando mensajes nativos de Firefox

Estoy tratando de crear un inspector de URL usando mensajes nativos de Firefox. El problema es que, cuando la aplicación nativa envía un veredicto, el oyente onBeforeRequest ya lanzó una solicitud, por lo que no se produce la redirección. ¿Puede ayudarme a hacer que mi extensión espere la respuesta por hasta 2 segundos y redirija la solicitud si la respuesta es "0"?

var port = browser.runtime.connectNative("ping_pong");

function inspectURL(requestDetails) {
    console.log("Loading: <" + requestDetails.url + ">");
    port.postMessage(requestDetails.url);
    console.log("Posting complete <" + requestDetails.url + ">");
}

port.onMessage.addListener((response) = > {
    console.log("Received: <" + response + ">");
    if (response == "1")
    {
        console.log("Good url!!!");
    }
    else
    {
        console.log("BAD url - redirecting!!!");
        return {
        redirectUrl: "https://38.media.tumblr.com/tumblr_ldbj01lZiP1qe0eclo1_500.gif"
        };
    }
});

browser.webRequest.onBeforeRequest.addListener(
    inspectURL,
    { urls: ["<all_urls>"] },
    ["blocking"]
);

Respuestas a la pregunta(2)

Su respuesta a la pregunta