Note that the receive threads "break" when they are processing responses or unsolicited requests from BCS. These "breaks" are necessary since some computational time needs to elapse inside the imservice/EIM-connector in order to handle the event. A future optimization would be to reduce these breaks through traditional mechanisms e.g. fork, etc. However and nonetheless, in the BCS there must always existing some mechanism to queue and/or retry events in the case where the client is unresponsive.
The dashed green lines represent passage of time, and separate different stages for this example: login, followed by unsolicited presence update, followed by send message, followed by unsolicited message.