This seem very nice and well thought out!
Do you have a real code example of the usage?
The usage is probably the more important bit for a potential consumer of the library.
That's a great suggestion! The next part will have an example of usage and introduce the concept of ack/nack back to the originator.