EventMachine provided a event-reactor based concurrency model, but its API was so different and imposed a different style of programming (namely, callback-based) that it didn't really mesh with the "Ruby way" and most importantly was incompatible with most of the Ruby ecosystem (and especially Rails).