There are several issues here: we do not want to retry on an exception
ever as an exception indicates a final failure. e.g. a resolution
timeout for the whole query. Recursing in that state will generate
an exception storm. Individual timeouts of contacting a nameserver
do not generate an exception. Also, we do not want to recurse if
the cache lookup for stale records did not produce anything in the
second iteration, we know it's probably going to be fatal and it
requires (portentially) a lot of work to find out.