I've recently had a bug in my code where I called basic/ack more than once on the same message. Modern versions of RabbitMQ respond to this by closing the channel.
However -- langohr did not report event with an exception, but silently ate it; the only exception which bubbled up was later, on future attempts to use the channel, at which point it was already closed -- and at which point the exception given was a generic attempt-to-use-closed-channel error, not mentioning the original message given by the RabbitMQ server pointing to the duplicate-acks bug.
From IRC: "there is a way to build a consumer with error handlers, langohr.consumer/subscribe needs to be more like that"
It's now possible to register shutdown hooks and there is a way to build a consumer. I find this a sufficient solution, given that Langohr does not implement its own consumer methods dispatch.