Task.WhenAny - вернет когда один из тасков закомпличен или зафейлен, в этот момент я могу какую-то полезную логику совершить
Ну смотри, вот ты дождался асинка, это сообщение вида Task<Task<>>.
Ты ожидаешь первый таск это Task.WhenAny - любая из очередей готова отдать сообщение, значит это уже и есть сообщение, потому что очередь уже отработала и можно сразу получить сообщение из неё