As one cannot call statement return from within a Coroutine, the very first part of Outcome’s
support for Coroutines is OUTCOME_CO_TRYV(expr)/OUTCOME_CO_TRY(expr)
,
which is literally the same as OUTCOME_TRY() except that co_return is called
to return early instead of return.
eager<result<std::string>>to_string(intx){if(x>=0){OUTCOME_CO_TRY(convert(x));}co_return"out of range";}