Есть несколько способов реализовать это. Первое использование очереди, второе использование свойства, чтобы отметить, что запрос выполняется прямо сейчас.
Второе решение довольно сложно, если запрос не удастся, тогда начнется сбойная последовательность, и необходимо сбросить свойство в этой последовательности.
Во-вторых, что значит ждать первого запроса? Удерживайте соединение и не отвечайте, пока первый запрос не заполнит кэш или просто быстро ответит «сервер слишком занят» (также допустимо).