бросок не всплывает через такой обратный вызов. Передайте обработчик ошибок и обработайте его вручную.
Позвольте мне проиллюстрировать ваши следы стека
Не существует соединения трассировки стека между функцией onreadystatechange и функцией connectTo. Поэтому, когда вы выдаваете ошибку, она никогда не всплывает до блока try catch вокруг connectTo.
Что Firefox делает, это говорит "Oh you did something that doesn't work. let me fix that for you and do what you think it does"
function connectTo(url, err) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.onreadystatechange = function () {
if (xhr.readyState == xhr.DONE) {
err.call(this, new Error("troubles"));
}
};
xhr.send();
}
connectTo("http://www.google.com", function(e) {
console.log(e);
});