In reply to Reuben:
Using an associative array might work, except for the case where you could have two expected elements with the same address. This would result in the first item being replaced by the second item.
I find that queues work well since it is fairly quick to add new items to the end of the queue and it maintains ordering. Searching through the queue might not be very efficient as the number of outstanding elements grows, but it works ok for a small number.