Hi Richie,
Instead of all the these trails, please use a action in your BO to delete the subnode(if any) and root instance from the BO in the following way
this.subnode.Delete();
this.Delete();
This Delete action should be defined on the root level in the below way
action Delete;
Use this BO action and bind it to the button on the OWL. This will work for sure rather than trying in the above.
We use same kind of scripting and binding with buttons. This will give use space for adding really any logic if needed for making sure delete to get executed or not.
Regards
Hanu K