public async Task <List <Game> > GetAtariAndAmigaGames()
        {
            Stopwatch watch = new Stopwatch();

            watch.Start();
            var bounds     = GetIdBounds();
            var igdbModels = await _igdbClient.QueryAsync <IGDB.Models.Game>(
                IGDB.Client.Endpoints.Games,
                query : string.Format(
                    GamesRequest,
                    string.Join(",", new[] { AtariPlatformId, AmigaPlatformId }),
                    bounds.LowerId,
                    bounds.HigherId,
                    20))
                             .ConfigureAwait(false);

            var result = igdbModels.Select(ToDomainEntity).ToList();

            watch.Stop();
            var remainingWaitingTime = TimeSpan.FromSeconds(2) - watch.Elapsed;

            if (remainingWaitingTime > TimeSpan.Zero)
            {
                // Sometimes the api is too good x)
                await Task.Delay(remainingWaitingTime);
            }

            switch (_errorEmulator.ErrorType)
            {
            case ErrorType.Unknown:
                throw new InvalidOperationException();

            case ErrorType.Network:
                throw new NetworkException();

            case ErrorType.Server:
                throw new ServerException();

            case ErrorType.NoData:
                return(new List <Game>());

            case ErrorType.ErrorOnRefresh:
                if (DateTime.Now.Second % 2 == 0)
                {
                    throw new NetworkException();
                }

                throw new ServerException();
            }

            return(result);
        }
        public async Task <Game> GetRandomGame(bool mostPop = false)
        {
            var igdbModels = await _igdbClient.QueryAsync <IGDB.Models.Game>(
                IGDBRestClient.Endpoints.Games,
                GetStringRequest(
                    new[]
            {
                AtariPlatformId,             // AmigaPlatformId,
            }))
                             .ConfigureAwait(false);

            var result = igdbModels.Select(ToDomainEntity).ToList();

            return(result[_randomizer.Next(0, result.Count)]);
        }