If more than ~256 commands have been requested at a time via commands.execAsync(), their respective "task_complete" events will stop firing. For one thing, this makes it difficult to measure the amount of commands that're still pending execution (... a figure which may lead to a "task limit exceeded" error if it's allowed to grow unchecked, or to my other script outright "stalling" for reasons I haven't nailed down yet but I certainly hope don't involve commands.execAsync() yielding!).
Use the following to verify (this code fails due to the event queue being flooded, see two posts down for an example that fails without doing so):
Spoiler
Tweaking maxCommands down to around 256 (or less), on the other hand, works, and you shouldn't have to go much higher in order to trigger the stall. These symptoms also exist under 1.66pr3 (I've not had access to a 1.66 build older than that).
TLDR version:
Too many commands being executed at once result in the event queue being flooded, no matter how fast you try to pull them.
But even if you don't go anywhere near flooding the queue, while commands are running events have a random chance of not making it in there (affecting timer events, command events, and presumably others too).
Edited by Bomb Bloke, 06 November 2015 - 10:58 PM.