waitOne

suspend fun <T> AsyncSignal<T>.waitOne(): T
suspend fun <T> Signal<T>.waitOne(): T
suspend fun Iterable<Signal<*>>.waitOne(): Any?
suspend fun <T> Signal<T>.waitOne(timeout: TimeSpan): T?
suspend fun <T1, T2> Signal2<T1, T2>.waitOne(): Pair<T1, T2>