public async Task ExecuteRequests(int batchSize = 5) { if (batchSize > 5) { batchSize = 5; } var requests = (await GetRequests()).OrderByDescending(x => x.Key).Take(5); foreach (var item in requests) { try { //call mockup var response = await ExecuteRequest(item.Value); //delete request from cache var requestToDelete = requests.Where(x => x.Value.Request == item.Value.Request).FirstOrDefault(); await cacheAccessor.DeleteRequestsFromCache(requestToDelete.Value); //save response await cacheAccessor.SetResponseToCache( new ResponseItem { Customer = response, RequestGuid = item.Value.Request }); } catch (Exception ex) { continue; } } }