I consider interesting the asynchronous delegates, something like: val result by deferred
, this is really similar to the blocking version val result by future
, so this considerations are debatable.
Synchronous and asynchronous worlds do not fit well together, blue and red functions are -after all- incompatible, you already mentioned data class
.
Finally Kotlin’s coroutine library enriches suspending functions with coroutine scopes, this makes harder to implement a suspend lazy{ ... }
, I already exposed some concerns in issue #1065.