Used in try {} blocks so the type produced in the ? desugaring
depends on the residual type R and the output type of the block O,
but importantly not on the contextual type the way it would be if
we called <_ as FromResidual>::from_residual(r) directly.