function defer(func /*, input...*/) {
    var input = Array.prototype.slice.call(arguments, 1);
    return function() {
      return serialExecute(input.slice())
        .then(function(args) {
          return func.apply(null, args);
        });
    };
  }
// applies the function to the results.
applies the function to the results.
applies the function to the results .
function defer(func ) {
    var input = Array.prototype.slice.call(arguments, 1);
    return function() {
      return serialExecute(input.slice())
        .then(function(args) {
          return func.apply(null, args);
        });
    };
  }
function defer ( func ) { var input = Array . prototype . slice . call ( arguments , 1 ) ; return function ( ) { return serialExecute ( input . slice ( ) ) . then ( function ( args ) { return func . apply ( null , args ) ; } ) ; } ; }
applies the function to the results.
applies the function to the results .
/*, input...*/