public async Task <TlsRptPollResult> Process(string domain)
        {
            TlsRptRecordInfos tlsRptRecordInfos = await _dnsClient.GetTlsRptRecords(domain);

            if (!_config.AllowNullResults && (tlsRptRecordInfos.HasError ||
                                              tlsRptRecordInfos.RecordsInfos.TrueForAll(x => string.IsNullOrWhiteSpace(x.Record))))
            {
                throw new TlsRptPollerException($"Unable to retrieve TLS-RPT records for {domain}.");
            }

            if (tlsRptRecordInfos.HasError)
            {
                return(new TlsRptPollResult(domain, tlsRptRecordInfos.Error));
            }

            EvaluationResult <TlsRptRecords> parsingResult = _parser.Parse(tlsRptRecordInfos);

            EvaluationResult <TlsRptRecords> evaluationResult = await _evaluator.Evaluate(parsingResult.Item);

            return(new TlsRptPollResult(evaluationResult.Item, parsingResult.Errors.Concat(evaluationResult.Errors).ToList()));
        }