Q prom: вызываемые вызовы в том же порядке, что и зарегистрированные?

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

http://jsfiddle.net/HgYtK/1/

var deferred = Q.defer();
var promise = deferred.promise;

['first', 'second', 'third'].forEach(function (position) {
  promise.then(function () {
    alert(position);
  });
});

deferred.resolve();

Это дает правильный результат, но я не знаю, является ли это частью спецификации или счастливым совпадением, которое может сломать линию.

Ответ 1

Из Promises/A + Spec

2.2.6.1

Если/когда promise выполняется, соответствующие обратные вызовы onFulfilled должны выполняться в порядке их исходящих вызовов на then.