If Node-based operations aren’t called on the main thread, you will tend to run into issues like this. Godot is recommending you use call-deferred so that it can essentially call your method at the end of frame on the main thread. This is the reason it does not return an object as well, because it’s not actually calling it yet where you invoke it, but later.
A couple things you could do:
A) Create a Method that does the FindChild and QueueFree like you have shown, but call that method deferred from CaseCompleted.
B) Create a singleton node with a queue that you can fill and process your queued actions on the main thread. It’s essentially similar to CallDeferred, but you have more control over the behavior. (This is what I use so I can just avoid these headaches in general)
e.g.