I don't understand how this is an infinite loop.

I see what you tried to do here. But: Delay is an async task. Or, to be precise, a node that creates an async task object, that somewhen later will trigger its Completed pin. That’s the problem: the node itself only create task and itself immediately returns breaking execution flow.

And since your body doesn’t change anything, that means that you infinitely spawns Delay until next tick tasks.

As for solution - as others said, there are better ways to do it, like timers or tick()

2 Likes