function chain() {
var actors = Array.prototype.slice.call(arguments);
next();
function next(err) {
if (err) return actors.pop()(err);
var actor = actors.shift();
var args = Array.prototype.slice.call(arguments);
if (actors.length > 0) {
args = args.slice(1).concat(next);
}
actor.apply(null, args);
}
}