From reading this article, http://www.artima.com/articles/io_design_patternsP.html
I understand that the proactor pattern is fully asynchronous while the reactor pattern is not.
All the popular asynchronous event-driven networking frameworks that I'm aware of (Twisted, Gevent, Tornado, Asyncio, and Node.js) apply the reactor design pattern. Why is that? Doesn't the proactor pattern provide better performance?