Well, of course the first thing that came into my mind was that there was a possibility that a new incoming event would be queued before the NTimer event would be scheduled, and this would mean that a new MessageReceived event would be triggered before the NTimer could even process the previous message.