Untropee, если я правильно тебя понял, то 500 прилетает из-за недоступности сервера, поэтому тебе в коде нужно посмотреть где крашится и там сделать исключение, типа если ошибка, то делаем что-то, например так:
xhr.send();
xhr.onreadystatechange = () => {
if (xhr.readyState !== 4) return;
if (xhr.status >= 200 && xhr.status < 400) {
// тут код когда все хорошо, что то делаем
} else {
// тут обрабатываем ошибку
}
}
собственно все. Проблема в том, что вы не верно обрабатываете запросы.