I'm trying to run a list of functions synchronously after a loop using promise.all() but my code doesn't work as expected. 
Does someone know what I did wrong?
my code is :
var Promise = require('promise');
var promises = [];
for (var i = 0; i < 3; i++) {
    console.log('push promise ' + i);
    promises.push(foo(i));
}
Promise.all(promises)
        .then(function (data) {
            console.log("done");
        });
function foo(i) {
    return new Promise(function (resolve, reject) {
        console.log('---> foo i ' + i);
        resolve('done foo ' + i);
    });
}
but the output is
push promise 0
---> foo i 0
push promise 1
---> foo i 1
push promise 2
---> foo i 2
done
where I expect
push promise 0
push promise 1
push promise 2
---> foo i 0
---> foo i 1
---> foo i 2
done
Thank you in advance.
 
     
     
     
    