Multiple promises all completing at once

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/q.js/0.9.6/q.js"></script>

JavaScript

function MyAsyncCall(value) {
    // Get a deferred object from Q library
    var deferred = Q.defer();    
    setTimeout(function() {
    console.log(value);
    if(value != 3)
    	deferred.resolve(value);
     else
     	deferred.reject();
    }, Math.random() * 5000)
    
    // Return the promise directly from the method
    return deferred.promise;
}


var list = [1,2,3];

promiseArray = list.map(function(value){
		return MyAsyncCall(value);
});
Q.all(promiseArray)
    .then(function(arrayOfSuccess) {
        // All promises are done. We now have an array of the resolve results
        alert('Success: ' + arrayOfSuccess.length);
    })
    .catch(function(err) {
        // One of the promises errored out
        alert('Error: ' + err);
    });