function defer(func) {
      if (!isFunction(func)) {
        throw new TypeError;
      }
      var args = slice(arguments, 1);
      return setTimeout(function() { func.apply(undefined, args); }, 1);
    }
Defers executing the `func` function until the current call stack has cleared.
Additional arguments will be provided to `func` when it is invoked.

@static
@memberOf _
@category Functions
@param {Function} func The function to defer.
@param {...*} [arg] Arguments to invoke the function with.
@returns {number} Returns the timer id.
@example

_.defer(function(text) { console.log(text); }, 'deferred');
// logs 'deferred' after one or more milliseconds