Edit in JSFiddle

(function (jQuery) {
    jQuery.whenAll = function (deferreds) {
        var lastResolved = 0;
        var wrappedDeferreds = [];

        for (var i = 0; i < deferreds.length; i++) {
            wrappedDeferreds.push(jQuery.Deferred());

            deferreds[i].always(function(jqXHR) {
                wrappedDeferreds[lastResolved++].resolve(arguments);
            });
        }

        return jQuery.when.apply(jQuery, wrappedDeferreds).promise();
    };
}(jQuery));

jQuery.whenAll([jQuery.get('/echo/json/'), jQuery.get('/echo/json/404')])
   .done(
       function(result1, result2) {
           $('body').append(result1[1]);
           $('body').append("<br/>");
           $('body').append(result2[1]);
       });