code: function chainSteps(/*fun1, fun2, ..., funN*/) {
  	var steps = slice.call(arguments);
  	return function(/*arg1, ... argN, callback*/) {
  		var initArgs = slice.call(arguments);
  		var callback = initArgs.pop();
  		if (!callback) {
  			throw new Error('Callback is missing');
  		}
  		iterateSteps(steps, initArgs, callback);
  	};
  }
docs: TwoStep section
   
  Chaining together all passed functions.
  The results of the step call are passed to the following step
  in the form of stepN(err, args...).
  The execution result of the whole chain is passed
  via the callback call: callback(err, result).
  
  @return {function(args..., callback)} the resulting chain of steps