public async Task <List <TeamDto> > GetTeamsAsync() { var availableLeagues = _mapper.Map <List <AvailableLeague>, List <LeagueDto> >(_configuration .FootballDataOrgAvailableLeagues.ToList()); var availableExternalLeaguesIds = await _leagueManager.GetExternalLeaguesIds(availableLeagues, ExternalSourceEnum.FootballDataOrg); List <TeamDto> teams = new List <TeamDto>(); foreach (var leaguesId in availableExternalLeaguesIds) { try { List <TeamDto> teamsOfCurrentLeague = await GetTeamsByCompetitionAsync(leaguesId); teams.AddRange(teamsOfCurrentLeague); } catch (FlurlHttpException ex) { //TODO: переделать таймаут перед вызовом каждого метода, используя данные ответа с апи в хедере!!! ErrorContract error = await ex.GetResponseJsonAsync <ErrorContract>(); if (error.ErrorCode == 429) { Thread.Sleep(_sourceTimeOutInSeconds * 1000); List <TeamDto> teamsOfCurrentLeague = await GetTeamsByCompetitionAsync(leaguesId); teams.AddRange(teamsOfCurrentLeague); } } } return(teams.Distinct(new TeamDtoComparer()).ToList()); }