later = function later() {
      timeout = null;
      if (!immediate) fn.apply(context, args);
    }
Returns a function, that, as long as it continues to be invoked, will not
be triggered. The function will be called after it stops being called for
`wait` milliseconds. If `immediate` is true, trigger the function on the
leading edge, instead of the trailing.

@param {Function} fn
@param {Integer} wait
@param {Boolean} immediate
@api public