Pre-RFC: flexible `try fn`

I've wondered before whether there's a fundamental difference between "carried" effects like async/try and "erasable" ones like const/unsafe. I can totally imagine how polymorphism for the latter might work, but I have no idea how to abstract away differences like for_each vs try_for_each...