code: function(ms) {
        var fn = this;
        function debounced() {
          debounced.cancel();
          setDelay(debounced, ms, fn, this, arguments);
        };
        return debounced;
      }
docs: *
  @method debounce(<ms>)
  @returns Function
  @short Creates a "debounced" function that postpones its execution until after <ms> milliseconds have passed.
  @extra This method is useful to execute a function after things have "settled down". A good example of this is when a user tabs quickly through form fields, execution of a heavy operation should happen after a few milliseconds when they have "settled" on a field.
  @example
  
  var fn = (function(arg1) {
  // called once 50ms later
  }).debounce(50); fn() fn() fn();
  
  *