If I am understanding the other notes correctly:
Neither the worker nor publisher should ever really block (even in cases where M>N, N>M, publisher crashed, etc), mostly due to the async zmq bindings for node. If there are a ton of messages being sent to a single worker this worker will pull down messages as fast as it can and the rest will still be in publisher queue.
If a worker crashes this is happening separate from the publisher and won't affect the queue stored in the publisher's memory