async function runAndTestScenario(t, scenario, platformRunScenario) {
  /** @type {Result | undefined} */
  let result
  /** @type {Error | undefined} */
  let err
  try {
    result = await platformRunScenario({ scenario, log: t.log.bind(t) })
  } catch (e) {
    err = /** @type {Error} */ (e)
  }
  await scenario.checkPostRun(t, result, err, scenario)
  return result
}
@template [Result=unknown] Default is `unknown`
@param {import('ava').ExecutionContext} t
@param {import('./scenario').NormalizedScenario<Result>} scenario
@param {PlatformRunScenario<Result>} platformRunScenario
@returns {Promise<Result | undefined>}