currently connection::set_receive_response can't fail, and it will accept a reference to any Response object.
If that Response object can't accommodate what we get from the server, it cancels the channel and async_receive returns cancelled. This took me a couple hours to figure out in a coworker's code just now.
I'm having a hard time using either the Redis documentation or the Boost.Redis documentation figuring out if it is ever ok to use a fixed response type here and if so what that fixed response type should be.
If a fixed response is not allowed, this should at least be documented in the set_receive_response page in the reference, and ideally the method should be made to only accept a reference to a generic response object.
If a fixed response is allowed, the type(s) of fixed response(s) you can use should be documented somewhere and/or shown in example code. And, if possible, the method should be made to only accept valid ones (although this seems likely tricky).