From a "memory model" viewpoint (
https://en.wikipedia.org/wiki/Java_memory_model) , I'm correct in assuming coroutines always ensure an "happens-before" order for actions between suspension points in the same coroutine, even if the actions run on different threads, right?