Probably just latency. Even though you didn't see your offer yet, it was there. For some reason, you saw the other offer first, but they probably actually hit the book in the order you would expect.
I use TT in the futures, and in a fast market, the bids and offers you see are not the actual bids and offers. My autospreader will get prices that I never saw trade.
Remember that IB doesn't send every change - just snapshots. It may be throttling by waiting a certain number of ms after seeing a change to see if another change happens before sending it to the client. This would get rid of much of the quote traffic generated by these bots.