async function readPolicy(readPower, policyDir) {
  let [policy, policyOverrides] = await Promise.all(
    [DEFAULT_POLICY_FILENAME, DEFAULT_POLICY_OVERRIDE_FILENAME].map(
      (filename) =>
        readPower(path.resolve(policyDir, filename))
          .then((bytes) => JSON.parse(`${bytes}`))
          .catch((err) => {
            if (err.code !== 'ENOENT') {
              throw err
            }
            return undefined
          })
    )
  )
  if (!policy) {
    throw new Error(`LavaMoat - policy not found in ${policyDir}`)
  }

  if (policyOverrides) {
    policy = mergePolicy(policy, policyOverrides)
  }

  return policy
}
Reads a policy and policy overrides using a `ReadFn`, then merges the result.

@param {ReadFn} readPower - File read power
@param {string} policyDir - Path to the policy directory. If relative, will
  be resolved to cwd
@returns {Promise<LavaMoatPolicy>}
@todo Make the stuff in `lavamoat-core`'s `loadPolicy` accept a `readPower`,
  and get rid of this.