This means that if you have multiple threads (one for EM, one for, say, adding to EM), it is possible that you might create a connection (EM::connect), it will create the connection within the reactor, but not add its sig to @conns (yet), and EM will attempt to call connection_completed on the connection before @conns has reference to it (and throw an error that inherits from Exception). Couple of fixes would be to surround access/adding''s to @conns (and @timers--same thing) with mutex sync''s (ugh). Another might be to put a ''placeholder'' in @conns so that later accesses know it''s in process. Turns out that thread.critical = true doesn''t seem to work real well in the current versions of Ruby (if it did, that would be another possibility).. Using it to surround EM.connect calls doesn''t work -- it still loses context focus for some reason. I am using the former method and it appears to be working all right. You''d think that multiple threads creating things would cause conflicts on addition to the hash, but I just assume that the different threads running []= and .delete is ok, since I can''t think of how that would cause conflicts (each key only gets added/deleted once). I might be wrong. That''s it for tonight! Have a good one.