To avoid an expensive stack unwind, instead of throwing an error, we can just return it thanks to the boost::result type that the affected methods use. The result with an exception needs to be constructed not implicitly, but with boost::outcome_v2::failure, because the exception, converted into coordinator_exception_container can be then converted into both into a successful response_id_type as well as into a failure.