I think non-blocking I/O is pretty hard, as evidenced by the fact that POE is still not very widely used. It can provide impressive results in the hands of skilled programmers though. It was the secret sauce that allowed the original (pre-web) AOL to scale on the hardware that was available back then.
Comment on Re^3: Parrot, threads & fears for the future.
In my opinion, POE is not widely used because non-blocking IO is hard but because POE itself isn't a nice programming model. I've programmed a bit with Coro, and there, the non-blocking IO is almost invisible. Unfortunately, Coro doesn't compile on native Windows and at the time it had some stability problems on Linux too, with glibc5, so I stopped using it.