Есть юзерскрипт (некоторые переменные и шелуху, не очень информативную, я выбросил):
(function (window, undefined) { // [2] нормализуем window
var w;
if (typeof unsafeWindow != undefined) {
w = unsafeWindow;
} else {
w = window;
}
if (w.self != w.top) {
return;
}
function start() {
var read = getread();
checkResult(read);
}
function checkResult(last_read) {
setTimeout(function() {
if (last_read < getread()) {
//1-ый блок
} else if (last_read > getread()) {
//2-ый блок
} else {
//3-ый блок
checkResult(last_read);
}
}, 500);
}
function getread() {
}
function minimum_rate() {
}
function callnetwork() {
}
})(window);
Данный скрипт парсит онлайн чат некоторого сайта. Иногда на функции checkResult скрипт не может получить ответ от сайта. В таком случае выполняет третье условие (третий блок) и перезапускает функцию checkResult() снова. И так может быть несколько раз. Но порой, после неоднократного повторения третьего блока функции checkResult() в консоле можно увидеть ошибку "Failed to load resource: the server responded with a status of 429 ()" либо какой-нибудь другую (например иногда это может быть 500(), либо 502()). В таком случае, скрипт "зависает" на бесконечном выполнении третьего блока функции checkResult().
Подскажите пожалуйста, как можно поправить логику скрипта, чтобы не возникала такая ошибка?