Pop the first data available in the queue, locking the calling if no data is available.
The function is ensured to return with a reference to some data.