I'd add that while I was already familiar with coroutines from a few different contexts and languages, I found this particular framing of them -- especially seeing them contrasted side by side with a state-machine -- enlightening and novel.
We implemented a low-power wireless sensing device on a microcontroller using asynchronous coroutines in C to replace eight state machines. It was a dream. Every operation process was clearly "linear" in readability while overlapping radio frequency hopping, sensor power-up/down sequencing, sense state, transmission, firmware update, etc. All while going into low-power mode until the next event to process.