docs: def close_cursor(self, cursor_id, address=None):
          """Send a kill cursors message soon with the given id.
  
          Raises :class:`TypeError` if `cursor_id` is not an instance of
          ``(int, long)``. What closing the cursor actually means
          depends on this client's cursor manager.
  
          This method may be called from a :class:`~pymongo.cursor.Cursor`
          destructor during garbage collection, so it isn't safe to take a
          lock or do network I/O. Instead, we schedule the cursor to be closed
          soon on a background thread.
  
          :Parameters:
            - `cursor_id`: id of cursor to close
            - `address` (optional): (host, port) pair of the cursor's server.
              If it is not provided, the client attempts to close the cursor on
              the primary or standalone, or a mongos server.
  
          .. versionchanged:: 3.0
             Added ``address`` parameter.
          """
          if not isinstance(cursor_id, integer_types):
              raise TypeError("cursor_id must be an instance of (int, long)")
  
          if self.__cursor_manager is not None:
              self.__cursor_manager.close(cursor_id, address)
          else:
              self.__kill_cursors_queue.append((address, [cursor_id]))