code: function extendingErrorPath (key, fn) {
    try {
      return fn()
    } catch (e) {
      throw Object.assign(e, { path: [key].concat(e.path || []) })
    }
  }
docs: Intercept errors thrown by `fn()`, extending them with information from `key`
  @rtype (key: String, fn: Function) => Any
  @param {String} key - Information to attach
  @param {Function} fn - Thunk
  @return {Any} Execution result