vaskir
07/03/2017, 1:08 PMsuspend fun <T> withTimeout(timeout: Long, units: TimeUnit, f: () -> Deferred<T>) : T? {
val d = f()
return select<T?> {
d.onAwait { it }
onTimeout(timeout, units) {
d.cancel()
null
}
}
}