actually, seems to be a race condition between the shutdown check and the eventQueue.put() here, and the shutdown set and the eventQueue.drainTo() above.  not sure a good way to fix that without adding external locking to eventQueue, or using a new eventQueue implementation that we can set to not accept new elements.