ReactiveX isn't the only option available for writing reactive code to handle asynchronous events in Kotlin. Kotlin version 1.3 brought support for coroutines, which is a concept common to other programming languages, designed specifically to write asynchronous code. Coroutines can be thought of as lightweight threads that allow developers to write non-blocking asynchronous code.