This article seems to focus on fairly heavy weight threads, but what about green threads? It seems like green threads with proper nonblocking libraries could behave performance-wise just like evented servers.
Check out GHC's new IO manager. GHC, by default, uses non-blocking IO exclusively and calls "poll" or some equivalent syscall to figure out which green thread to wake up.