function(ms) {
      var fn = this;
      var args = multiArgs(arguments).slice(1);
      setDelay(fn, ms, fn, fn, args);
      return fn;
    }
function(ms) {
      var fn = this;
      var args = multiArgs(arguments).slice(1);
      setDelay(fn, ms, fn, fn, args);
      return fn;
    }
function ( ms ) { var fn = this ; var args = multiArgs ( arguments ) . slice ( 1 ) ; setDelay ( fn , ms , fn , fn , args ) ; return fn ; }
*
@method delay([ms] = 0, [arg1], ...)
@returns Function
@short Executes the function after <ms> milliseconds.
@extra Returns a reference to itself. %delay% is also a way to execute non-blocking operations that will wait until the CPU is free. Delayed functions can be canceled using the %cancel% method. Can also curry arguments passed in after <ms>.
@example

(function(arg1) {
// called 1s later
}).delay(1000, 'arg1');

*
* @method delay ( [ ms ] = 0 [ arg1 ] ... ) @returns Function @short Executes the function after <ms > milliseconds . @extra Returns a reference to itself . %delay% is also a way to execute non - blocking operations that will wait until the CPU is free . Delayed functions can be canceled using the %cancel% method . Can also curry arguments passed in after <ms > . @example