invokeOnFirst

suspend fun <T, O> Iterable<Deferred<T>>.invokeOnFirst(    scope: CoroutineScope,     cancelOnResult: Boolean = true,     callback: suspend (T) -> O): O(source)
suspend fun <T, O> invokeOnFirst(    scope: CoroutineScope,     vararg variants: Deferred<T>,     cancelOnResult: Boolean = true,     callback: suspend (T) -> O): O(source)