On the topic of async APIs, Ktor has 'native' support for Kotlin Coroutines; you can use coroutines with Spring, however, it's through the bridge of Project Reactor which makes the experience more difficult (massive stack traces that obscure issues, requires you to understand and use Mono/Flux when interacting with parts of Spring, etc.)