Coroutine function (Delay node) for c++

Can someone explain what is happening in that 2nd C# snippet? I’m guessing something like synchronous execution as far as the yield, at which point the calling thread continues and the coroutine also continues in parallel? Doesn’t the caller need to somehow repeatedly tell the coroutine it can run again?