I can't get because wait makes debugging difficult. Your problem with proc_mode is documented " It is automatically reset by wait() for not affecting further functions, but restored when the function continues".
By default the order is not random: "the execution order of functions is determined by the order of their calls"
I remember having performance issues when I used while loop for each NPC etc.
This only makes sense if you need many functions active. With Lite-C more than 30000 functions could be waiting at the same time with a good fps.