# Eliminating coroutine races

DevFeed: [Eliminating coroutine races](<https://devfeed.tech/articles/eliminating-coroutine-races-39297.md>)

Original publisher: [Read original article](<https://kt.academy/article/eliminating-coroutine-races>)

Published: 2023-06-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>)

Tags: [await](<https://devfeed.tech/tags/await.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

## AI overview

This tutorial explains how coroutine races occur when coroutines start in an unpredictable order and presents ways to coordinate them. It covers awaiting a completed coroutine, handling listener and event races in Android MVI scenarios, and using replay or completion signals for flows.

## Source excerpt

How to make one coroutine await for another coroutine or flow subscription.