code: def _handle_socket(self, event: int, fd: int, multi: Any, data: bytes) -> None:
          
          event_map = {
              pycurl.POLL_NONE: ioloop.IOLoop.NONE,
              pycurl.POLL_IN: ioloop.IOLoop.READ,
              pycurl.POLL_OUT: ioloop.IOLoop.WRITE,
              pycurl.POLL_INOUT: ioloop.IOLoop.READ | ioloop.IOLoop.WRITE,
          }
          if event == pycurl.POLL_REMOVE:
              if fd in self._fds:
                  self.io_loop.remove_handler(fd)
                  del self._fds[fd]
          else:
              ioloop_event = event_map[event]
              # libcurl sometimes closes a socket and then opens a new
              # one using the same FD without giving us a POLL_NONE in
              # between.  This is a problem with the epoll IOLoop,
              # because the kernel can tell when a socket is closed and
              # removes it from the epoll automatically, causing future
              # update_handler calls to fail.  Since we can't tell when
              # this has happened, always use remove and re-add
              # instead of update.
              if fd in self._fds:
                  self.io_loop.remove_handler(fd)
              self.io_loop.add_handler(fd, self._handle_events, ioloop_event)
              self._fds[fd] = ioloop_event
docs: Called by libcurl when it wants to change the file descriptors
          it cares about.