async function loadPolicy({ debugMode, policyPath }) {
  /** @type {import('./schema').LavaMoatPolicy} */
  let policy = { resources: {} }
  try {
    const rawPolicy = readPolicyFileSync({ debugMode, policyPath })
    policy = rawPolicy ?? policy
  } catch (err) {
    if (/** @type {NodeJS.ErrnoException} */ (err).code !== 'ENOENT') {
      throw err
    } else if (debugMode) {
      console.warn(`Lavamoat could not find policy at '${policyPath}'`)
    }
  }
  return policy
}
Loads a policy from disk, returning a default empty policy if not found.

@param {PolicyOpts} opts
@returns {Promise<import('./schema').LavaMoatPolicy>}
@todo Because there is no validation taking place, the resulting value could
  be literally anything `JSON.parse()` could return. Also note that this
  returns a `LavaMoatPolicy` when we could be asking for a
  `LavaMoatPolicyOverrides`; make your type assertions accordingly!