I'm not sure if you can call a function and then destroy the calling function because i think that messes up the path of execution.

Can't you just put the function to call at the end of the calling function. When the called functions finishes, it will return to the original function and then that will return. Maybe i misunderstood the question.