It's common that people run in to a problem and then they immediately blame Construct. I would discourage you from doing this - not only is it somewhat tiring, it's also not the best way to investigate and diagnose a problem and will probably just send you on a wild goose chase which will only increase your frustration. A better approach is to basically take a debugging approach. For example you could add console logs frequently through the events, with messages like "Starting funcA", "Finishing funcA", "Step1", "Step2" etc. Then you can easily see in the console the specific order that everything ran in. This then helps figure out where things are diverging from what you expect, and helps you hone in on why. Chances are it's working as designed (but remember events are a pretty different paradigm to traditional programming languages, so in some cases the intended design may not be identical to other typical languages). Even if you become convinced it's a bug, you then have a project ideally set up to either share on the forum to ask about why it's working that way, or post to the bug tracker as a project demonstrating what you believe to be a bug.
Where the hell did this bitch slap come from?
If you read my posts, nowhere did I blame Construct. I did ask if this was a bug which is not an indication of blame. When I was told the reason, I blamed JS.
The way I discovered this WAS through a debugging approach whereby I inserted a breakpoint at the start of the event sheet and watched as it sent back a return value from a function without completing the function. In my coding experience I have NEVER seen a language that has anything I can insert in the middle of a function that tells it to both complete AND break out of the function at the same time, which is what Wait 0 is doing. While I do see the potential benefit of doing that in rare circumstances, it's not something I've encountered ever before and therefore is not something I would habitually look for as a coding error which is why it took me hours to finally track down. Furthermore, IMHO, the fact that Wait 0 and Wait 0.01 do two VASTLY different things (if what I'm seeing is correct) is also absurd.
And if you keep reading my posts, you'll also see that I did create a test project, which I shared and which demonstrated why the Wait 0 in a function is nothing short of illogical. By simply turning it on or off, I can completely change the order in which functions are completed.
On the other hand, if you just keep making random changes to an event sheet, and always want to blame something other than the logic of your events, then yeah, you'll probably have a hard time making progress!
What? Where the hell did you get that I was making random changes? My logic? Is that some petty insult? You're accusing me of being stupid and illogical in my approach to solving this? Well, I know how to respond to that. I can take me and my stupid illogical wallet back across the pond.