FirefoxのWebExtensionsでgetBackgroundPageを使ってbackground script上の関数を呼び出そうとすると、Error: Permission denied to access property "f1"というエラーが発生します

下記の例ではブラウザのポップアップにあるcheckboxがtrueの時だけ、10秒ごとにデータを取得しています。

何故、このようなエラーが起こるのでしょうか?

Edit: 最小限の・自己完結した・確認可能なサンプルコードに変更


Edit 2:

chrome54ではgetBackgroundPageを使って関数がうまく実行できているようです
もしかしてFirefoxのバグなのでしょうか?


background-page.js:



function f1() {
    fetch("http://example.something.com/example").then((res) => {
        res.text().then((text) => console.log(text));
    });
}

function loop() {
    f1();
    if (getStorageValue("checked")) {
        setTimeout(loop, 10000); // setTimeoutを使って10秒ごとにデータを取得
    }
}

function getStorageValue(key) {
    let retVal;
    chrome.storage.local.get(key, (result) => {
        retVal = result[key];
    });
    return retVal;
}

loop();

browser_action.js

let bgpage = chrome.extension.getBackgroundPage();
let checkbox = document.getElementById("checkbox"); // checkboxを取得
let status = document.getElementById("status");
chrome.storage.local.get("checked", (result) => {
    checkbox.checked = result.checked || true; // storageに格納したcheckboxの値を反映させる
});


checkbox.onchange = (e) => {
    chrome.storage.local.set({"checked": checkbox.checked}); // checkboxの状態をstorageに格納
    if (checkbox.checked) {
            status.textContent = "ON";
            bgpage.loop(); // Error: Permission denied to access property "f1"
    }
    else {
        status.textContent = "OFF";
    }
}

default_popup.html:


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <label class="switch">
            <span id="status">OFF</span>
            <input id="check" type="checkbox">
        </label>
        <script src="browser_action.js"></script>
    </body>
</html>

manifest.json:


{
    "manifest_version": 2,
    "version": "1.0",
    "name": "My Extension",

    "background": {
        "scripts": ["background-page.js"]
    },

    "permissions": [
        "*://example.something.com/example/*",
        "webRequest",
        "alarms",
        "notifications",
        "storage"
    ],

    "browser_action": {
        "default_icon": {
            "19": "icons/icon-19.png",
            "38": "icons/icon-38.png"
        },
        "default_title": "my popup",
        "default_popup": "popup/default_popup.html"
    }
}