Ciao Federico, aggiungo alla risposta di Francesco riguardo il punto 3 che è possibile riportare la sintassi a callback, tipica della programmazione asincrona, alla semplice sintassi procedurale, utilizzando l'apposito modulo per Kotlin http://vertx.io/docs/vertx-lang-kotlin-coroutines/kotlin/ http://vertx.io/docs/vertx-lang-kotlin-coroutines/kotlin/
Il vantaggio su esempi banali è ridicolo, ma basta aggiungere un ciclo e un try-catch per rendere il codice più complesso. Tra le varie presentazioni da me proposte per l'evento di Marzo, una parla proprio di questa problematica e di come risolverla con le coroutine. L'esempio fatto proprio per Vert.x, poi hanno scritto il modulo ufficiale Ciao, Vasco