Eggdrop is not threaded, and can't run 2 commands at once.
It works using normal loops
LOOP START
checking incoming messages from the server
call each bind individualy based on incoming text
check incoming partyline activity
send some queued messages
clean somthing up
LOOP REPEAT
(Not very precise)
As such, eggdrop will only process one user message a time.
It's not likely to be a problem with speeding your code up, or making things work in any sort of paralel M0dj0.
This sounds more like the queues that it outputs too.
If on the first call to the script, it outputs 15 lines, the second time around, it add's another 15 lines.
As such, this is now 30 lines in the queue, which is run through one by one, in order.
As noted in another thread, you could, using your own code, find a way to get around this. But IRC servers class all text, globaly as a flood.
IE
They don't use 2 seperate flood couters, for different nicknames you are sending too.
So if the flood detector on the IRC server is set to 16 lines (not likely, it's just an example), simply outputting your 30 lines in the queue will flood you off, because the messages are counted globaly.