Consider the following code:
        function wait(ms) {
            var deferred = $.Deferred();
            setTimeout(deferred.resolve, ms);
            return deferred.promise();
        }
        var starter, promiseOne;
        starter = $.Deferred();
        promiseOne = starter.then(function () {
            console.log("Calling promiseOne");
            return wait(2000);
        }).done(function () {
            console.log('promiseOne done');
        });
        starter.resolve();
        var now=new Date().getTime();
        var stop=now+5000;
        while (stop>new Date().getTime()){}
        console.log('timeout finished');
By running it, I am getting the following results:
Calling promiseOne
timeout finished
promiseOne done
I was thinking that promise callbacks are sent to Event queue, so I was expecting these results:
timeout finished
Calling promiseOne
promiseOne done
If not sending to Event queue,I 'd expect:
Calling promiseOne
promiseOne done
timeout finished
Could someone explain to me why am I getting the first triad?
P.S. By replacing then with done, I am getting:
Calling promiseOne
promiseOne done
timeout finished
 
    