public Task <ClientData[]> AnalyzeLog(Stream stream, LogFormat format) { // bug .net core: https://github.com/dotnet/corefx/issues/10024 var bug10024 = new System.Net.Sockets.Socket(System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); BaseParser parser = null; parser = GetParserForFormat(format); var logEntries = parser.ParseLog(stream); var result = Task.WhenAll(logEntries.GroupBy(l => l.ClientIP).Select(async g => new ClientData { IP = g.Key, RequestCount = g.Count(), HostEntry = await this.GetHostEntry(g.Key) })); return(result); }