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);
        }