class_docstr: Configurable asynchronous DNS resolver interface.
  
  By default, a blocking implementation is used (which simply calls
  `socket.getaddrinfo`).  An alternative implementation can be
  chosen with the `Resolver.configure <.Configurable.configure>`
  class method::
  
      Resolver.configure('tornado.netutil.ThreadedResolver')
  
  The implementations of this interface included with Tornado are
  
  * `tornado.netutil.BlockingResolver`
  * `tornado.netutil.ThreadedResolver`
  * `tornado.netutil.OverrideResolver`
  * `tornado.platform.twisted.TwistedResolver`
  * `tornado.platform.caresresolver.CaresResolver`
docstr: Resolves an address.
  
  The ``host`` argument is a string which may be a hostname or a
  literal IP address.
  
  Returns a `.Future` whose result is a list of (family,
  address) pairs, where address is a tuple suitable to pass to
  `socket.connect <socket.socket.connect>` (i.e. a ``(host,
  port)`` pair for IPv4; additional fields may be present for
  IPv6). If a ``callback`` is passed, it will be run with the
  result as an argument when it is complete.
  
  :raises IOError: if the address cannot be resolved.
  
  .. versionchanged:: 4.4
     Standardized all implementations to raise `IOError`.
code: def resolve(self, host, port, family=socket.AF_UNSPEC, callback=None):
      """Resolves an address.
  
      The ``host`` argument is a string which may be a hostname or a
      literal IP address.
  
      Returns a `.Future` whose result is a list of (family,
      address) pairs, where address is a tuple suitable to pass to
      `socket.connect <socket.socket.connect>` (i.e. a ``(host,
      port)`` pair for IPv4; additional fields may be present for
      IPv6). If a ``callback`` is passed, it will be run with the
      result as an argument when it is complete.
  
      :raises IOError: if the address cannot be resolved.
  
      .. versionchanged:: 4.4
         Standardized all implementations to raise `IOError`.
      """
      raise NotImplementedError()
  
imports: from __future__ import absolute_import, division, print_function
  import errno
  import os
  import sys
  import socket
  import stat
  from tornado.concurrent import dummy_executor, run_on_executor
  from tornado.ioloop import IOLoop
  from tornado.platform.auto import set_close_exec
  from tornado.util import PY3, Configurable, errno_from_exception
label_desc: Use image node_id 3 for calling the Resolver obj's underlying member method code with example usage: obj.resolve(host, port, family, callback) without return types