После расследования главной проблемой была строка:
if (country.eventIDs.length === 0) return
(и многие другие решались с помощью комментариев).
Проблема, поясняющая, чтоявляется то, что return
не пропускает зацикленный элемент (как, возможно, ожидалось), а скорее возвращает void
в обратном вызове then
, поэтому пропускает дальнейшее выполнение этого блока.
Для того, чтобы "пропустите элемент, если это условие истинно, просто сделайте это вместо
for (const country of json) {
if (country.eventIDs.length > 0) {
country.eventIDs.forEach(id => promises.push(getEventData(country, id)))
}
}