anchor.diff:            (attach-data-to-pointer data-pointer dns-base)
             (le:bufferevent-socket-connect-hostname bev dns-base le:+af-unspec+ host port)))
       (if stream
  -        (make-instance 'async-io-stream :socket socket)
  +        tcp-stream
           socket)))
   
   (defun tcp-server (bind-address port read-cb event-cb &key connect-cb (backlog -1))
  
positive.code:                                      :listener listener
                                       :tcp-server tcp-server))))
  
  (defun tcp-send (host port data read-cb event-cb &key write-cb (read-timeout -1) (write-timeout -1) dont-drain-read-buffer stream)
    "Open a TCP connection asynchronously. An event loop must be running for this
     to work."
    (check-event-loop-running)
  
    (let* ((data-pointer (create-data-pointer))
           (bev (le:bufferevent-socket-new *event-base* -1 +bev-opt-close-on-free+))
           (socket (make-instance 'socket :c bev :direction 'out :drain-read-buffer (not dont-drain-read-buffer))))
      (le:bufferevent-setcb bev (cffi:callback tcp-read-cb) (cffi:callback tcp-write-cb) (cffi:callback tcp-event-cb) data-pointer)
      (le:bufferevent-enable bev (logior le:+ev-read+ le:+ev-write+))
      (save-callbacks data-pointer (list :read-cb read-cb :event-cb event-cb :write-cb write-cb))
  
negative.code:    callback system to run user-specified anonymous callbacks on read events."
    (let* ((bev-data (deref-data-from-pointer bev))
           (socket (getf bev-data :socket))
           (tcp-stream (getf bev-data :stream))
           (callbacks (get-callbacks data-pointer))
           (read-cb (getf callbacks :read-cb))
           (event-cb (getf callbacks :event-cb))
  