queryDnsRecords = async (domainName, recordType = 'A') => {
if (!domainName) throw Error(`No DNS domain name provided: "${domainName}"`);
if (!recordType) throw Error(`No DNS record type provided: "${recordType}"`);
let res;
try {
res = await resolver.query(domainName, recordType, 'GET', 'Accept: application/dns-message', 1000);
} catch (err) {
return err;
}
if (res.rcode !== 'NOERROR') {
switch (res.rcode) {
case 'NXDOMAIN':
throw Error("NXDOMAIN: DNS query failed because the domain name queried does not exist");
break;
case 'SERVFAIL':
throw Error("SERVFAIL: DNS query failed because the answer cannot be given");
break;
case 'REFUSED':
throw Error("REFUSED: DNS query failed because the server refused to anser due to policy");
break;
default:
throw Error("DNS query returned an unknown response code");
}
}
return res.answers;
}