public async Task <Item> LoadItem(BungieMembershipType type, long accountId, long characterId, uint itemHash, long instanceId) { var accessToken = await _contextAccessor.HttpContext.GetTokenAsync("access_token"); var modsTask = LoadAllMods(accessToken, type, accountId); var itemTask = GetItemDefinition(itemHash); var instanceTask = GetInstance(accessToken, type, accountId, instanceId); await Task.WhenAll(modsTask, itemTask, instanceTask); var sockets = await _socketFactory.LoadSockets(itemTask.Result.item.Sockets, instanceTask.Result.sockets, modsTask.Result.mods, modsTask.Result.shaders); return(new Item(_bungie.BaseUrl, itemTask.Result.item, itemTask.Result.bucket, instanceId, instanceTask.Result.instance, instanceTask.Result.stats, sockets)); }