code: function after(n, func) {
        if (!isFunction(func)) {
          throw new TypeError(funcErrorText);
        }
        n = nativeIsFinite(n = +n) ? n : 0;
        return function() {
          if (--n < 1) {
            return func.apply(this, arguments);
          }
        };
      }
docs: /*-------------------------------------------------------------------------- 
  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