Превращение моих комментариев в ответ:
Состояние ошибки 503, вероятно, указывает на то, что на сервере происходит что-то еще, что ложно сообщается как ошибка CORS. Возможно, вы слишком быстро делаете слишком много запросов к серверу, и по этой причине он сообщает об ошибке в запросе OPTIONS и, таким образом, он сообщается как ошибка CORS, но на самом деле это вызвано слишком быстрым выполнением запросов.
Общей причиной для кода состояния 503 является «услуга недоступна». Так что это также может быть вызвано некоторой инфраструктурой, которая защищает целевой сервер от слишком большого количества запросов.
Поскольку я не могу изменить API, как я могу получить информацию о 20 людях? Должен ли я использовать таймер? или рекурсивная функция? Оба они, кажется, не очень хорошее решение. Как я могу решить это на стороне интерфейса?
Прочитайте документацию по API или посетите форумы поддержки и выясните, какой тип ограничения скорости он реализует. Если вы не можете найти какие-либо документы или справочную информацию по этому вопросу, вам придется выяснить это путем тестирования, а затем ограничить частоту запросов, чтобы оставаться ниже этого уровня.
UPDATE
Из документа видно, что вы можете получить 20 пользователей одним вызовом API.
Подробнее см. https://randomuser.me/documentation#multiple.
Пример:
https://randomuser.me/api/?results=20