function promiseQueue(data, promiseCreator) {
    data = data.concat();
    function keepWorking() {
        if (data.length > 0) {
            var item = data.shift();
            return promiseCreator(item).then(keepWorking);
        }
    }

    return vow.resolve().then(keepWorking);
}
Creates a queue using promises.

@param {Array[]} data
@param {Function} promiseCreator
@returns {Promise}