I thought I did - maybe the wrong documentation? From the intro docs
We are using the delay() function that’s like Thread.sleep(), but better: it doesn’t block a thread, but only suspends the coroutine itself. The thread is returned to the pool while the coroutine is waiting, and when the waiting is done, the coroutine resumes on a free thread in the pool.
Which made me think that in general “delay” is less resource intensive than Thread.sleep, because it doesn’t eat an entire thread.
Great! Which reference do you mean? (What Google Search were you doing?)