How to create a dynamic promise chain.
// var index = ... hash of id => filename return _.reduce(index, function(seq, filename, id) { return seq.then( function() { return fs.read(filename); } ) }, Q.resolve());