Edit in JSFiddle

var timeout = function(delay){
    
    var d = Q.defer();
    
    setTimeout(function(){
        $("body").append(delay).append("<br>");
        d.resolve(delay);
    }, delay);
    
    return d.promise;
};

Q.all([
   timeout(5000),
   timeout(1000)
]).then(function(){
   $("body").append("done").append("<br>");
});

              

              

External resources loaded into this fiddle: