Currently, if you want cancellation with `perform_cmd`, it has to be implemented manually in a rather awkward way. It would be great if `perform_cmd` returned a drop guard which, when dropped, drops the corresponding future and prevents a message to be sent.