public async Task Tick() { var urlsToPing = await _urlRepo.GetAll(); var urls = urlsToPing.Select(c => c.Url); var pingTasks = (from url in urls select _httpClientPinger.Ping(url)).ToList(); var pingResults = await Task.WhenAll(pingTasks); foreach (var result in pingResults) { await _resultsRepo.Insert(new PenguinResult { Url = result.Url, ResponseTime = (int)result.ResponseTime, TimeStamp = DateTimeOffset.UtcNow.DateTime }); } var orderedByLevel = pingResults.OrderBy(c => c.Level).ToList(); var transformedMsg = _transformer.Transform(orderedByLevel); await _notifier.Notify(transformedMsg); _log.Information(transformedMsg); }