'Construct a resolver which will query domain name servers listed in
the C{resolv.conf(5)}-format file given by C{resolv} as well as
those in the given C{servers} list.  Servers are queried in a
round-robin fashion.  If given, C{resolv} is periodically checked
for modification and re-parsed if it is noticed to have changed.
@type servers: C{list} of C{(str, int)} or L{None}
@param servers: If not None, interpreted as a list of (host, port)
pairs specifying addresses of domain name servers to attempt to use
for this lookup.  Host addresses should be in IPv4 dotted-quad
form.  If specified, overrides C{resolv}.
@type resolv: C{str}
@param resolv: Filename to read and parse as a resolver(5)
configuration file.
@type timeout: Sequence of C{int}
@param timeout: Default number of seconds after which to reissue the
query.  When the last timeout expires, the query is considered
failed.
@param reactor: A provider of L{IReactorTime}, L{IReactorUDP}, and
L{IReactorTCP} which will be used to establish connections, listen
for DNS datagrams, and enforce timeouts.  If not provided, the
global reactor will be used.
@raise ValueError: Raised if no nameserver addresses can be found.'

def __init__(self, resolv=None, servers=None, timeout=(1, 3, 11, 45), reactor=None):

    common.ResolverBase.__init__(self)
    if (reactor is None):
        from twisted.internet import reactor
    self._reactor = reactor
    self.timeout = timeout
    if (servers is None):
        self.servers = []
    else:
        self.servers = servers
    self.resolv = resolv
    if ((not len(self.servers)) and (not resolv)):
        raise ValueError('No    nameservers    specified')
    self.factory = DNSClientFactory(self, timeout)
    self.factory.noisy = 0
    self.connections = []
    self.pending = []
    self._waiting = {}
    self.maybeParseConfig()
