*
@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');

*
function(ms) {
      var fn = this;
      var args = multiArgs(arguments).slice(1);
      setDelay(fn, ms, fn, fn, args);
      return fn;
    }