Godot's gdscript is a surprisingly robust language. It seems like it might be rough because it doesn't have things like array types (just variant arrays) or control structures like do...while.
I
wrote a thing to handle executing async sprite changes and animations in serial, but it ended up being really generic and could be used as an async queue for anything. It's named "SpritePresenter" but it's a function-and-arguments saver and caller. That could only be done because of good support for first-class(ish) functions and async.