function after(n, func) {
      if (!isFunction(func)) {
        throw new TypeError;
      }
      return function() {
        if (--n < 1) {
          return func.apply(this, arguments);
        }
      };
    }
Creates a function that executes `func`, with  the `this` binding and
arguments of the created function, only after being called `n` times.

@static
@memberOf _
@category Functions
@param {number} n The number of times the function must be called before
 `func` is executed.
@param {Function} func The function to restrict.
@returns {Function} Returns the new restricted function.
@example

var saves = ['profile', 'settings'];

var done = _.after(saves.length, function() {
  console.log('Done saving!');
});

_.forEach(saves, function(type) {
  asyncSave({ 'type': type, 'complete': done });
});
// => logs 'Done saving!', after all saves have completed