Async programming: Cooperative vs. Preemptive scheduling
kerkour.com