class_docstr: Non-blocking HTTP client with no external dependencies.
  
  This class implements an HTTP 1.1 client on top of Tornado's IOStreams.
  Some features found in the curl-based AsyncHTTPClient are not yet
  supported.  In particular, proxies are not supported, connections
  are not reused, and callers cannot select the network interface to be
  used.
class_docstr_tok: ["Non-blocking","HTTP","client","with","no","external","dependencies",".","This","class","implements","an","HTTP","1.1","client","on","top","of","Tornado","'s","IOStreams",".","Some","features","found","in","the","curl-based","AsyncHTTPClient","are","not","yet","supported",".","In","particular",",","proxies","are","not","supported",",","connections","are","not","reused",",","and","callers","can","not","select","the","network","interface","to","be","used","."]
docstr: Timeout callback of request.
  
  Construct a timeout HTTPResponse when a timeout occurs.
  
  :arg object key: A simple object to mark the request.
  :info string key: More detailed timeout information.
docstr_tok: ["Timeout","callback","of","request",".","Construct","a","timeout","HTTPResponse","when","a","timeout","occurs",".",":","arg","object","key",":","A","simple","object","to","mark","the","request",".",":","info","string","key",":","More","detailed","timeout","information","."]
code: def _on_timeout(self, key, info=None):
      """Timeout callback of request.
  
      Construct a timeout HTTPResponse when a timeout occurs.
  
      :arg object key: A simple object to mark the request.
      :info string key: More detailed timeout information.
      """
      request, callback, timeout_handle = self.waiting[key]
      self.queue.remove((key, request, callback))
  
      error_message = "Timeout {0}".format(info) if info else "Timeout"
      timeout_response = HTTPResponse(
          request,
          599,
          error=HTTPError(599, error_message),
          request_time=self.io_loop.time() - request.start_time,
      )
      self.io_loop.add_callback(callback, timeout_response)
      del self.waiting[key]
  
imports: from __future__ import absolute_import, division, print_function
  from tornado.escape import utf8, _unicode
  from tornado import gen
  from tornado.httpclient import HTTPResponse, HTTPError, AsyncHTTPClient, main, _RequestProxy
  from tornado import httputil
  from tornado.http1connection import HTTP1Connection, HTTP1ConnectionParameters
  from tornado.iostream import StreamClosedError
  from tornado.netutil import Resolver, OverrideResolver, _client_ssl_defaults
  from tornado.log import gen_log
  from tornado import stack_context
  from tornado.tcpclient import TCPClient
  from tornado.util import PY3
  import base64
  import collections
  import copy
  import functools
  import re
  import socket
  import sys
  from io import BytesIO
label_desc: Use image node_id 9 for calling the SimpleAsyncHTTPClient obj's underlying member method code with example usage: obj._on_timeout(key, info) without return types