package Ġdev . in mo . micro _ utils . coroutines Ċ Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlin . coroutines .* Ċ Ċ suspend Ġfun Ġ< T > ĠIterable < Deferred < T >> . await First With Deferred ( ĊĠĠĠ Ġscope : ĠCor outine Scope , ĊĠĠĠ Ġcancel On Result : ĠBoolean Ġ= Ġtrue Ċ ): ĠPair < Deferred < T >, ĠT > Ġ= Ġsuspend Coroutine < Pair < Deferred < T >, ĠT >> Ġ{ Ġcontinuation Ġ-> ĊĠĠĠ Ġscope . launch ( Supervisor Job ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscope Ġ= Ġthis ĊĠĠĠĠĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinuation . resume ( it Ġto Ġit . await ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }. also Ġ{ ĊĠĠĠ Ġif Ġ( cancel On Result ) Ġ{ ĊĠĠĠĠĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ suspend Ġfun Ġ< T > ĠIterable < Deferred < T >> . await First ( ĊĠĠĠ Ġscope : ĠCor outine Scope , ĊĠĠĠ Ġcancel On Result : ĠBoolean Ġ= Ġtrue Ċ ): ĠT Ġ= Ġawait First With Deferred ( scope , Ġcancel On Result ). second Ċ suspend Ġfun Ġ< T > ĠIterable < Deferred < T >> . await First ( ĊĠĠĠ Ġcancel Others : ĠBoolean Ġ= Ġtrue Ċ ): ĠT Ġ= Ġawait First ( Coroutine Scope ( coroutine Context ), Ġcancel Others ) Ċ