Okay so I have a truly terrible solution to this. I am really hoping someone can help me as this was a single line of code in unity and its been terrible trying to do this very simple thing in godot.
My solution is I create an autoload script with a single variable in. I then have a script in my level which spawns a sprite and it then changes the variable in the autoload script from 0 to 1,2 or 3 as I desire. In the new sprite I then have an onready function which changes the variable in the sprites script to match the integer in the autoload script and change that back to 0. If the number in the autoload script is 0 and not a viable number the new sprite sends out a signal to say it failed to set up, then clears itself. The level script listens for this signal and if it hears it then it tries to set the sprite up again.
This is horrific and honestly if this is the only way to do something so simple in godot then I think I am going to give up on this game engine.