Я создаю свое первое расширение для Chrome, и с этой проблемой я борюсь уже несколько дней.

Когда расширение включено, оно добавляет слушателя и блокирует запросы, но когда оно выключено, оно должно удалить слушателя (не блокировать запросы). Проблема в том, что removeListener по какой-то причине не работает.

  chrome.storage.local.get(["button"], function(result) {
    //
    let extensionState = result.button;
    let blocksRequestsFunction = function(details) {
      if (extensionState === "on") {
        console.log("blocking:", details.url);
        return { cancel: true };
      } else {
        console.log("it's off");

        chrome.webRequest.onBeforeRequest.removeListener(
          blocksRequestsFunction
        );
        return { cancel: true };
      }
    };

    function blocksAds() {
      chrome.webRequest.onBeforeRequest.addListener(
        blocksRequestsFunction,
        { urls: ["*://*.adjaranet.com/"] },
        ["blocking"]
      );
    }

    blocksAds();
  });
});