// what have I done
pub(crate) fn send_message<R: Send, M: Message<Result = R> + Send + 'static>(
msg: M,
) -> impl Future<Output = crate::Result<R>>
where
GaugeCache: Handler<M>,
{

small, swift, and easily startled
// what have I done
pub(crate) fn send_message<R: Send, M: Message<Result = R> + Send + 'static>(
msg: M,
) -> impl Future<Output = crate::Result<R>>
where
GaugeCache: Handler<M>,
{
(you haven't asked but... you can make this a bit nicer if you use M::Result, instead of R)