code: def _finish(self, curl, curl_error=None, curl_message=None):
      info = curl.info
      curl.info = None
      self._multi.remove_handle(curl)
      self._free_list.append(curl)
      buffer = info["buffer"]
      if curl_error:
          error = CurlError(curl_error, curl_message)
          code = error.code
          effective_url = None
          buffer.close()
          buffer = None
      else:
          error = None
          code = curl.getinfo(pycurl.HTTP_CODE)
          effective_url = curl.getinfo(pycurl.EFFECTIVE_URL)
          buffer.seek(0)
      # the various curl timings are documented at
      # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
      time_info = dict(
          queue=info["curl_start_time"] - info["request"].start_time,
          namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME),
          connect=curl.getinfo(pycurl.CONNECT_TIME),
          pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME),
          starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME),
          total=curl.getinfo(pycurl.TOTAL_TIME),
          redirect=curl.getinfo(pycurl.REDIRECT_TIME),
      )
      try:
          info["callback"](
              HTTPResponse(
                  request=info["request"],
                  code=code,
                  headers=info["headers"],
                  buffer=buffer,
                  effective_url=effective_url,
                  error=error,
                  reason=info["headers"].get("X-Http-Reason", None),
                  request_time=time.time() - info["curl_start_time"],
                  time_info=time_info,
              )
          )
      except Exception:
          self.handle_callback_exception(info["callback"])
  
imports: from __future__ import absolute_import, division, print_function
  import collections
  import functools
  import logging
  import pycurl
  import threading
  import time
  from io import BytesIO
  from tornado import httputil
  from tornado import ioloop
  from tornado import stack_context
  from tornado.escape import utf8, native_str
  from tornado.httpclient import HTTPResponse, HTTPError, AsyncHTTPClient, main
label_desc: Use image node_id 11 for calling the CurlAsyncHTTPClient obj's underlying member method code with example usage: obj._finish(curl, curl_error, curl_message) without return types