JSFiddle - React, Tailwind, and code Playground

JavaScript

var a = $.Deferred(),
    b = $.Deferred();

var waitAllRegardlessResult = function(promises) {
    var cnt = promises.length,
        d = $.Deferred(),
        countHandler = function() {
            if (--cnt == 0) {
                d.resolve();
            }
        };
    
    promises.map(function(promise) {
        promise.always(countHandler);
    });
    
    return d.promise();
};

var allFinished = waitAllRegardlessResult([a, b]).done(function() {
    console.log('all done');
});

b.reject();
a.resolve();