I run into this issue a lot dealing with console automation. I found that if I prefix (or some other way) my messages with the exact time (down to the thousandths of a second) then you can see that what Jim has told you is demonstrably true. One problem with so many moving pieces is that they don't all get done at the same time or the same order we want them to.
It frequently freaks some customers out that we (almost always) issue a response to a request before the request shows up on the console and in syslog they tend to show up several lines before the request. We actually had to add the ability to show what message we were processing in the text of the response because many (most) times, they are nowhere around each other or in any kind of order that they expect. So, especially when testing, I find that adding what time I think it is in the program is helpful, especially when we have multiple threads all going at once. Brian