Protocols.DNS: Reduce race-condition window in do_query().
When executing do_query() in another thread than the backend thread,
there was a risk that the answer would be received and handled by
the backend thread before the retry call_out was installed. This
could cause do_query() to fail with "Lookup in destructed object."
Potential fix for [bug 7460 (#7460)].