Ah, testing flag in send, not _flush.
This still seems to have the problem of the ready event not having time to fire, thereby never setting the flag to true, and so _flush is never called.

Couldn't zmq or Socket have some sort of asynchronous initialization method or constructor, run once when starting, calling a callback when ready?