| GlobalScope, scope lifetime, "where should I launch?" | ref-1-1-global-scope.md |
| async without await, fire-and-forget with async | ref-1-2-async-without-await.md |
| Breaking structured concurrency, launching in external scope from suspend | ref-1-3-breaking-structured-concurrency.md |
| awaitAll exception propagation, coroutineScope vs supervisorScope for parallel tasks | ref-1-4-awaitall-exception-propagation.md |
| coroutineScope { launch { } } as last line, "wait vs don't wait" | ref-2-1-launch-last-line-coroutine-scope.md |
| runBlocking inside suspend, blocking in coroutines | ref-2-2-runblocking-in-suspend.md |
| Blocking I/O on Default/Main, wrong Dispatchers for I/O | ref-3-1-blocking-wrong-dispatchers.md |
| Main-safe suspend functions, suspend blocking caller thread, ANR | ref-3-2-main-safe-suspend.md |
| Dispatchers.Unconfined in production | ref-3-2-dispatchers-unconfined.md |
| Job() / SupervisorJob() passed to launch/async/withContext | ref-3-3-job-context-builders.md |
| Injecting Dispatchers, hardcoded dispatcher, flaky tests, testability | ref-3-5-inject-dispatchers.md |
| Cancellation in loops, long loops not responding to cancel | ref-4-1-cancellation-intensive-loops.md |
| Periodic / repeating work, polling, zombie coroutine, infinite loop without isActive | ref-4-2-periodic-repeating-work.md |
| Swallowing CancellationException, catch Exception and cancel | ref-4-2-swallowing-cancellation-exception.md |
| Suspend in finally, cleanup that needs to suspend | ref-4-3-suspend-cleanup-noncancellable.md |
| Reusing scope after cancel(), cancelChildren vs cancel | ref-4-4-reusing-cancelled-scope.md |
| withTimeout scope cancellation, TimeoutCancellationException, withTimeoutOrNull | ref-4-6-withtimeout-scope-cancellation.md |
| withTimeout resource cleanup, resource leak on timeout, finally, NonCancellable | ref-4-7-withtimeout-resource-cleanup.md |
| SupervisorJob() in a single builder | ref-5-1-supervisor-job-single-builder.md |
| CancellationException for domain errors (e.g. UserNotFound) | ref-5-2-cancellation-exception-domain-errors.md |
| CoroutineExceptionHandler vs async, exceptions in async stored in Deferred until await() | ref-5-3-exception-handler-async.md |
| Slow tests, real delay() in tests | ref-6-1-slow-tests-real-delays.md |
| Uncontrolled fire-and-forget in tests, can't wait in tests | ref-6-2-uncontrolled-fire-and-forget-tests.md |
| Dispatchers.Main in tests, setMain/resetMain, CI flaky tests | ref-6-3-setmain-resetmain.md |
| Channel not closed, manual Channel without close() | ref-7-1-channel-close.md |
| consumeEach with multiple consumers | ref-7-2-consume-each-multiple-consumers.md |
| Architecture, layers (Data/Domain/Presentation), suspend vs callbacks | ref-8-architecture-patterns.md |
| Lifecycle-aware Flow collection (Android), repeatOnLifecycle, flowWithLifecycle | ref-8-2-lifecycle-aware-flow.md |
| Blocking in flow { }, Thread.sleep in flow, flowOn | ref-9-1-flow-blocking-call.md |
| Cold vs hot flows, StateFlow, SharedFlow, shareIn, stateIn, collect | ref-9-2-cold-vs-hot-flows.md |
| collectLatest semantics, cancels previous block, search vs complete work | ref-9-3-collect-latest.md |
| SharedFlow configuration, replay, extraBufferCapacity, onBufferOverflow, backpressure | ref-9-4-shared-flow-configuration.md |
| suspendCoroutine without cancellation, callback bridge | ref-101-interop-suspend-cancellable.md |
| callbackFlow without awaitClose, listener leak | ref-102-interop-callbackflow-awaitclose.md |
| channelFlow vs callbackFlow, wrong flow builder | ref-103-interop-channelflow-callbackflow.md |
| Future.get in coroutine, CompletableFuture blocking | ref-104-interop-future-get.md |
| MutableStateFlow exposed publicly, UDF violation | ref-95-flow-mutable-exposed.md |
| Flow chain missing catch, launchIn/collect without catch | ref-96-flow-missing-catch.md |
| runBlocking in tests, runTest virtual time | ref-64-test-runtest.md |
| Dispatchers.IO in commonMain, KMP crash | ref-111-kmp-dispatchers-io.md |
| runBlocking in commonMain, KMP deadlock | ref-112-kmp-runblocking.md |
| collectAsState without lifecycle, Compose background collection | ref-83-compose-collect-lifecycle.md |
| rememberCoroutineScope for init, LaunchedEffect | ref-84-compose-remember-scope-init.md |
| Side effect in composable body, recomposition | ref-85-compose-side-effect.md |
| Hardcoded Dispatchers in class, testability | ref-65-test-hardcoded-dispatcher.md |
| advanceUntilIdle missing in runTest, flaky test | ref-66-test-not-completed.md |
| flatMapLatest vs merge vs concat, Flow operator choice | ref-910-flow-flatmap-choice.md |
| SharedFlow one-shot events, Channel for navigation | ref-911-flow-oneshot-events.md |
| synchronized in coroutine, Mutex | ref-121-concur-synchronized.md |
| Sequential async await, wasted Deferred | ref-15-concur-sequential-async.md |
| stateIn Eagerly on ViewModel, WhileSubscribed | ref-97-flow-statein-eagerly.md |
| launchIn GlobalScope, unstructured Flow collection | ref-98-flow-launchin-unstructured.md |
| Side effect in map operator, onEach for effects | ref-99-flow-sideeffect-map.md |
| MDC not propagated, MDCContext | ref-37-backend-mdc.md |
| Blocking JDBC in backend coroutine, Dispatchers.IO | ref-131-backend-blocking.md |
| Missing CoroutineName, debugging | ref-141-debug-coroutine-name.md |
| Redundant nested withContext, same dispatcher twice | ref-36-concur-redundant-withcontext.md |
| MainScope without cancel, KMP presenter leak | ref-113-kmp-mainscope-without-cancel.md |
| Shared mutable state in launch, race on ArrayList | ref-122-concur-shared-mutable-state.md |
| withTimeout cancels parent scope, use withTimeoutOrNull | ref-4-6-withtimeout-scope-cancellation.md |
| Job in builder, SupervisorJob as argument | ref-3-3-job-context-builders.md |
| External scope launch from suspend, structured concurrency break | ref-1-3-breaking-structured-concurrency.md |
| Inline CoroutineScope, scope(CoroutineScope(...)) | ref-1-3-breaking-structured-concurrency.md |
| Scope reuse after cancel, launch after scope.cancel() | ref-4-4-reusing-cancelled-scope.md |
| ViewModelScope leak, collect without lifecycle | ref-8-2-lifecycle-aware-flow.md |