Unregister by consumer tag, not by consumer instance
Add missing exception class
Don't assign @connection until recovery has fully completed, as otherwise @connection#open? might return true before a connection has fully recovered, suggesting that consumers should use resources which have not yet been recovered
Prime the delivery_tag when a Headers instance is created