async with reporter() as r:
async def some_thing()
try:
await foo()
except BaseException as e:
r.report(e)
...
async with report_crashes(): ...
which captures and reports on a wide range of errors. It's actually outside the our cancel scope so we don't normally need shielding but we don't have control over how the user is running their event loop so there may be a cancel scope outside of our code and we need to report that failure still.
move_on_after(..., shield=True):