Yes, I know. That's not by chance, I coded it that way.
Every time that happens, that you are delayed for one, two or three seconds after clicking something that changes the game state (like pitting, spectating, leaving pits, etc) you should be happy that it delayed you for two seconds.
Well, be happy for the guy who joined, because he didn't then get kicked immediately because he was out of sync. And be happy for yourself each time you join a server and don't get kicked, because LFS is protecting you by making people wait one or two seconds occasionally if they try to do something at that momnet you are connecting.
There is a lot of data, connection info, car and setup info, damage, player info, which must be transmitted to a joining player. If the game state changes while he is joining, then he is out of sync and gets kicked.
This is not "stupid" or "ridiculous" as some people say it is - that's because they have never tried to make a multiplayer game with mid game join. It's quite a complicated process getting all that info correctly to the new player so the "game state" on his computer matches the "game state" on everyone else's computer.
Some people here may remember before we introduced the OOS check, very strange things could happen, someone could talk and on some peoples computers, the name before the text was wrong. Half the field might restart race while the other half continued racing. On some computers, someone won the race, while on others, there wasn't anyone near the finish line. Sometimes, at race restart, one guy was off the line way before the others. The OOS check started making sure everyone was in sync before anything odd happened. It requires some protection to avoid synchronisation errors.