¿Por qué las promesas de Q.js son asíncronas después de que se han resuelto?

Si tengo lo siguiente:

var deferred = Q.defer();

deferred.resolve();

var a = deferred.promise.then(function() {
    console.log(1);    
});

console.log(2); 

... ¿por qué veo 2, luego 1 en la consola?

Entiendo que esta salida es correcta de acuerdo con la especificación Promises, que dice llamar a la función en el siguiente tic (p. Ej.setTimeout()), incluso si ya está resuelto, pero no entiendo por qué.

Me gustaría tener un código que llamethen en una serie de promesas sincrónicamente, suponiendo que todas las promesas se hayan resuelto.

Mi caso de uso real es que estoy tratando de usar la implementación de Angular,$qy quiero todo elthen devoluciones de llamada para ejecutar en el mismo$digest ciclo, para que no tenga innecesarios posteriores$digest ciclos

Respuestas a la pregunta(1)

Su respuesta a la pregunta