code: function(fn, ms, args) {
      setDelay(fn, ms, fn, fn, args);
      return fn;
    }
docs: *
  @method delay([ms] = 1, [arg1], [arg2], ...)
  @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
  
  logHello.delay(500)     -> logs after 500ms
  logArgs.delay(500, 'a') -> logs "a" after 500ms
  
  @param {number} [ms]
  @param {any} [arg1]
  @param {any} [arg2]
  
  *