internal async System.Threading.Tasks.Task <Game> GetGameByIdAsync(long id) { try { if (GameCache.TryGetValue(id, out Game gameInCache)) { return(gameInCache); } Uri uri = new Uri("https://api-endpoint.igdb.com/" + "games/" + id); var jsonResult = webclient.DownloadStringTaskAsync(uri); var game = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Game> >(await jsonResult)[0] as Game; GameCache.Add(id, game); return(game); } catch (Exception e) { throw; } }