A thread per request does not scale to thousands of concurrent connections. An event loop does. Vert.x on the JVM with Kotlin makes non-blocking services that stay fast under load.