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());
        }