code: function setDelay(fn, ms, after, scope, args) {
      var index;
      // Delay of infinity is never called of course...
      if(ms === Infinity) return;
      if(!fn.timers) fn.timers = [];
      if(!isNumber(ms)) ms = 0;
      fn.timers.push(setTimeout(function(){
        fn.timers.splice(index, 1);
        after.apply(scope, args || []);
      }, ms));
      index = fn.timers.length;
    }
docs: *
  @package Function
  @dependency core
  @description Lazy, throttled, and memoized functions, delayed functions and handling of timers, argument currying.
  
  *