All the DNS data served by the "DNS root servers" is public and available for download via HTTP or FTP request.[FN1] As such, IMHO, there is rarely a reason to query those servers for the data they serve. I already have it.[FN1] For example, the IP address for the "a" com nameserver probably will not change in my lifetime. I am so sure of this that I have it memorised as 192.5.6.30.
A simple illustration of how to reduce DNS queries to one and reduce remote DNS queries to zero. Compile nsd as a root server using --enable-root-server. Add DNS data to a root.zone. Bind nsd to a localhost address, e.g., 127.8.8.8 and serve the zone. Configure the system resolver to query nameserver 127.8.8.8.
mkdir /tmp/nsd-01
cd /tmp/nsd-01
echo . 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2021101501 1800 900 604800 86400 > root.zone
echo example.com 1 IN A 93.184.216.34 >> root.zone
test ! -d /nonexistent||rm -rf /nonexistent
groupadd nsd-01
useradd nsd-01 -g nsd-01 -s /bin/false -b /nonexistent -d /nonexistent
chown nsd-01 /tmp/nsd-01
chgrp nsd-01 /tmp/nsd-01
printf 'server:\nipv4-edns-size: 0\nzonesdir: "/tmp/nsd-01"\nzone:\nname: "."\nzonefile: "root.zone"\n' > conf
nsd -u nsd-01 -4 -a 127.8.8.8 -c conf -l log -P pid -f db
cp /etc/resolv.conf resolv.conf.bak
echo nameserver 127.8.8.8 > /etc/resolv.conf
drill -oRD example.com
# cleanup
mv resolv.conf.bak /etc/resolv.conf
kill $(cat pid)
rm -rf /tmp/nsd-01
sleep 1
userdel nsd-01
FN1. How to get the DNS data that the root servers provide, without using DNS: x=$(printf '\r\n');
sed "s/$/$x/" << eof|openssl s_client -connect 192.0.32.9:43 -ign_eof
GET /domain/root.zone HTTP/1.1
Host: www.internic.net
User-Agent: www
Connection: close
eof
ftp://192.0.32.9/domain/root.zoneFN2. Except in emergencies where I have no access to locally stored root.zone DNS data. Also because I have the "a" root server IP address memorised as 198.41.0.4, I sometimes use it as a ping address.