No. Each message is delivered at most once. But good point, need to make that clearer!
> Do messages ever get removed from dnpipes without a reset.
No. Again, something I need to clarify as it seems.
> Does pull block, support async completions, or just return an error when no data is available?
It blocks.
> Reset, rather than sending an EOF which passes through the queue, implies that shutdown is either drastic or requires external coordination to empty the queue and stop the sending end before the reset.
I don't follow. Reset empties the underlying queue.
In general, since the consumers start to consume not from the beginning of time (as in Kafka's `--from-beginning`) but wherever they happen to be (that is, in Kafka terminology from `latest` index) this shouldn't be a problem.
I tried to model as close as possible and as it makes sense after the semantics of (local) named pipes. I might have fudged up here but I'm not 100% clear on where :)