private TaskResult ReadQueue(LazyQueue <TVal> queue) { var result = new TaskResult { Queue = queue }; TVal current; if (_ignoreFailures) { try { result.HasValue = queue.TryPeek(out current); } catch (Exception ex) { LogWarning(ex); current = default(TVal); } } else { result.HasValue = queue.TryPeek(out current); } result.Value = current; return(result); }