function baseFindKey(collection, predicate, eachFunc) {
    var result;
    eachFunc(collection, function(value, key, collection) {
      if (predicate(value, key, collection)) {
        result = key;
        return false;
      }
    });
    return result;
  }
The base implementation of methods like `_.findKey` and `_.findLastKey`,
without support for iteratee shorthands, which iterates over `collection`
using `eachFunc`.

@private
@param {Array|Object} collection The collection to inspect.
@param {Function} predicate The function invoked per iteration.
@param {Function} eachFunc The function to iterate over `collection`.
@returns {*} Returns the found element or its key, else `undefined`.