Неизвестная ошибка при выполнении fetch/XMLHttpRequest

Я пишу расширение для браузера, которое в чатах вконтакте заменяет гифки на граффити. Алгоритм прост: каждые 500 мс на странице чата проходим по каждому сообщению, ищем гифки, переходим по ссылке на gif-документ, парсим полученную html-страницу и вытягиваем оттуда ссылку на gif-изображение, затем в DOM-структуре заменяем gif-документ на анимированную gif-картинку. На моём компьютере в Chrome и в Firefox всё работает без проблем. Однако у друга в Firefox наблюдается очень странное поведение. Какое-то время всё работает нормально, но затем при попытке перейти по ссылке на gif-документ начинает возникать ошибка, и помогает только перезапуск браузера. Сперва я в коде использовал функцию fetch, тогда в консоли была ошибка "TypeError: NetworkError when attempting to fetch resource." Никакого решения этой ошибки мне найти не удалось. Потом решил попробовать XMLHttpRequest, но он тоже возвращает ошибку с кодом 0 и без какого-либо описания. Помогите, пожалуйста, обойти эту ошибку.

Код функции с fetch:

let response = await fetch("https://vk.com" + url + hash, {
    }).catch(reason => console.log(count + ": Ошибка HTTP: " + reason + "; гифка #" + n));
    console.log(count + ": Код ответа: " + response.status);
    if (response.ok) {
        console.log(count + ": Гифка #" + n + " получена, парсим страницу гиф-документа");
        // страница гиф-документа
        let html = await response.text();
        let doc = new DOMParser().parseFromString(html, "text/html");
        let img = doc.body.getElementsByClassName("can_zoom")[0];
        // считываем ссылку на гифку
        let src = img.getAttribute("src");
        // обрезаем параметры
        src = src.substring(0, src.indexOf("?"));
        localStorage.setItem(url, src);
        console.log(count + ": Ссылка на гифку #" + n + ": " + src);
        return src;
    }
    else console.log(count + ": Ошибка HTTP: " + response.status + "гифка #" + n);

Код функции с XMLHttpRequest:

let getGifImage = (url, hash, n) => new Promise(resolve => {
    let xhr = new XMLHttpRequest();
    xhr.open("GET", "https://vk.com" + url + hash);
    xhr.send();
    xhr.onloadend = function () {
        console.log(count + ": Код ответа: " + this.status);
        if (this.status == 200) {
            console.log(count + ": Гифка #" + n + " получена, парсим страницу гиф-документа");
            // страница гиф-документа
            let html = xhr.response;
            let doc = new DOMParser().parseFromString(html, "text/html");
            let img = doc.body.getElementsByClassName("can_zoom")[0];
            // считываем ссылку на гифку
            let src = img.getAttribute("src");
            // обрезаем параметры
            src = src.substring(0, src.indexOf("?"));
            localStorage.setItem(url, src);
            console.log(count + ": Ссылка на гифку #" + n + ": " + src);
            resolve(src);
        } else console.log(count + ": Ошибка HTTP (код ответа: " + this.status + "), гифка #" + n);
    };
});

Ответы (0 шт):