RoCk - in my experience (with 45+ years programming experience) any solution as simple as waiting for 3s will only work the majority of the time - maybe even most of the time.
But there is only one thing worse than something which doesn't work - and that is something that mostly works but sometimes doesn't. Intermittent problems are the worst type by far, because the cause can be incredibly difficult to work out.
And a simplistic solution that waits only 3s would have a significant number of intermittent failures. For example, I would think it highly likely to fail when a netsplit had occurred and hundreds of IRC clients were automatically logging in and authenticating at the same time.
To handle this, you have to increase the timeout substantially to cope with those (say) 10% of situations where it takes >3s, but that means all the automated joins have to wait for that period - and then the functionality becomes useless because people will turn it off.
So you need a deterministic solution which copes with hiccups but doesn't delay the autojoins - and the proposed solution is the simplest we have come up with so far which does that.