Похоже, что отправка нового запроса в setTimeout предотвратит отмену XHR. Я закодировал тест здесь, где вы можете попробовать его:
http://broofa.com/tests/SlowXHR.htm
Вот SendXHR.php (fwiw):
<?
sleep(2);
echo ", World";
Если флажок не установлен, нажатие кнопки «Сохранить как» останавливает цикл запроса.
Если флажок установлен, «сохранить как» не прерывает запросы.