JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://underscorejs.org/underscore.js"></script>

JavaScript

function executePromiseQueueSync(queue){
    var seed = $.Deferred(),
        finalPromise;

    finalPromise = _.reduce(queue, function(memo, promise){
        return memo.then(function(){
            return promise.funct.apply(null, promise.argmnt);
        });
    }, seed.promise());

    seed.resolve();
    return finalPromise;
}

function x(){
    var dfd = new jQuery.Deferred();
    dfd.notify();
    setTimeout(dfd.resolve,1);
    console.log("blah");
    return dfd.promise();
}

var promisesQueue = [];

promisesQueue.push({funct: x, argmnt:[]});
promisesQueue.push({funct: x, argmnt:[]});
promisesQueue.push({funct: x, argmnt:[]});

executePromiseQueueSync(promisesQueue).then(function(){
        console.log('success');
    }, function(){
        console.log('failure');
    }).progress(function(msg, progress, name, index, status, desc){
            console.log('progress');
        });