When mirc is inside a loop, it doesn't do anything else apart from the commands specified in the loop body. This "anything" includes checking for timer events, either generated through /timer or through /set -u. This is a fundamental aspect of how mirc works and not likely to change.
Keeping mirc spinning in a loop for an X number of seconds is possible but is just bad practice. You can achieve the same effects by using timers and/or events.
Sidenote: what happens with example code you gave is usually referred to as freeze, not crash. The latter means the program does something unintended and as a result is shut down by Windows. Also, the example should use /set -u: /var doesn't have a -u switch (because -u doesn't really make sense for local variables given the above).
Last edited by qwerty; 28/06/09 01:21 PM.