code: function isSafeMethod (object, method) {
    if (!object || typeof object[method] !== 'function') {
      return false
    }
    // UNSAFE: ghosted
    // e.g overridden toString
    // Note that IE10 doesn't support __proto__ and we can't do this check there.
    if (hasOwnProperty(object, method) &&
        (Object.getPrototypeOf && (method in Object.getPrototypeOf(object)))) {
      return false
    }
    // SAFE: whitelisted
    // e.g toString
    if (hasOwnProperty(safeNativeMethods, method)) {
      return true
    }
    // UNSAFE: inherited from Object prototype
    // e.g constructor
    if (method in Object.prototype) {
      // 'in' is used instead of hasOwnProperty for nodejs v0.10
      // which is inconsistent on root prototypes. It is safe
      // here because Object.prototype is a root object
      return false
    }
    // UNSAFE: inherited from Function prototype
    // e.g call, apply
    if (method in Function.prototype) {
      // 'in' is used instead of hasOwnProperty for nodejs v0.10
      // which is inconsistent on root prototypes. It is safe
      // here because Function.prototype is a root object
      return false
    }
    return true
  }
docs: Check whether a method is safe.
  Throws an error when that's not the case (for example for `constructor`).
  @param {Object} object
  @param {string} method
  @return {boolean} Returns true when safe, false otherwise