I've thought about it a bit more, and I have a hypothesis for CTM, if they are reading this. I suspect that the code called by the GUI thread is checking something in an object that encapsulates the POP state through an interface that specifies as its contract simply that it returns the current state of some variable. The implementation, however, asks for this information from the POP server, rather than returning the most recently cached value. This is the sort of subtle difference in interpretation of the contract that is often the source of bugs in object-oriented software, as it can be introduced by making an object stateless, for example, without violating the contract as documented.
I suspect that it is hitting the network because that means the delay won't occur unless there is significant latency to the server, which may not be the case in CTM's test setup, and for everyone else will depend on the network latency to get to the server as well as the server load. Hence not everyone sees it, those who do report it as intermittent, and CTM may have some trouble reproducing it in the lab. This is, of course, merely speculation based on my experience as a software engineer and is offered exclusively in the hope of helping CTM improve the product, not as criticism of anyone's coding. -- Raúl Vera Director Orbit 3 Pty Ltd 8 Coneill Place NSW 2037 Australia

