If this is successful, returns it. If this is failed, encapsulate the result of the provided recovery function. If the recovery function throws, the return value is a failed KmmResult.