The issue #31 raised a valid concern, which is that the delivery accept/reject stuff shouldn't be re-entrant, which it is because of the design of failures.
Failed messages shouldn't be responsible for clearing the delivery listeners on a delivery, that should happen on accept/reject.