firebug (1.10.1) предполагает, что javascript не ограничен одним потоком в firefox (13.0)

Во время отладки некоторого клиентского javascript сегодня в Firefox я столкнулся с чем-то, что я нашел довольно странным и немного расстраивающим. Кроме того, я не смог продублировать это поведение при отладке того же скрипта в IE / VS2010.

Я создал простой пример HTML-документа, чтобы проиллюстрировать аномалию, которую я вижу.

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js" type="text/javascript" ></script>
</head>

<body id="main_body">
    <script type="text/javascript">
        $(function () {
            $(".test-trigger").on("click", function () {
                loadStuff();
                console && console.log && console.log("this will probably happen first.");
            });
        });

        function loadStuff() {
            $.get("http://google.com/")
                .fail(function () {
                    console && console.log && console.log("this will probably happen second.");
                });
            }
    </script>
    <button class="test-trigger">test</button>
</body>
</html>

Если вы загрузите этот документ в Firefox (я использую версию 13.0 с Firebug версии 1.10.1 в Windows 7), нажмите кнопку «Тест» и просмотрите вкладку консоли в Firebug, вы должны заметить, что запрос get завершается неудачно (междоменное нарушение, которое не имеет никакого отношения к с пунктом, который я здесь пытаюсь сделать), и тогда вы, скорее всего, увидите:

this will probably happen first.
this will probably happen second.

Теперь разместите точки останова в строках 13 и 20:

13: console && console.log && console.log("this will probably happen first.");
20: console && console.log && console.log("this will probably happen second.");

Если вы нажмете кнопку «Тест» еще раз, вы окажетесь в строке 13, как и ожидалось. Теперь возобновите выполнение. Если ваш опыт похож на мой, вы не прервете строку 20. Также, если вы перейдете на вкладку консоли, вы увидите следующую последовательность вывода журнала:

this will probably happen second.
this will probably happen first.

Для меня это говорит о том, что обработчик сбоя запроса ajax выполняется в потоке, отличном от того, в котором выполняется обработчик щелчка. Я всегда верил, что весь javascript для одной страницы будет выполнен одна нить в любом браузере. Я что-то упускаю здесь действительно очевидное? Спасибо за понимание этого наблюдения.

О, если я отлаживаю одну и ту же страницу, работающую в IE, используя Visual Studio, обе точки останова достигаются, как я и ожидал

Ответы на вопрос(3)

Ваш ответ на вопрос