What's the problem with, am I doing wrong?
Your deferred
variable is not local to the loop body, but on a global scope. You're overwriting it each time with a new Deferred, and resolving only the last of them (but multiple times).
To fix it, you could try a closure, but you shouldn't use Deferred
anyway. Just use the promise you already have!
var bb = require('bluebird');
var promiseStack = [];
for(var i = 1; i < 10; i++) // 1 to 9 ???
promiseStack.push( bb.delay(2500) );
bb.all(promiseStack).then(function() {
console.log('done');
});