Completion Is an Ownership Boundary
An async method can finish its useful work and still be holding lifecycle state that tells the rest of the system it is active. That sounds like a tiny implementation detail. Under concurrency, it becomes a contract bug. I recently inspected a committed C# fix where an attempt could settle while two paths still believed they owned the same cancellation source. One path was normal attempt…
We haven't written up this one. Dev.to has the full story — the link below goes straight to it.