anchor.diff:    (:documentation "Close the `socket'."))
   
   ;; Interface methods
  +(defmethod connect ((socket socket) (port number) &optional (host #(127 0 0 1)))
  +  (prog1 socket
  +    (format t "Connect: ~A~%"
  +            (sockets:connect (sock socket) (sockets:make-address host) :port port))
  +    (emit socket "connect" socket)))
  +
   (defmethod send ((socket socket) (data sequence) &optional (callback (lambda (sock) (declare (ignore sock)))))
     (let ((watcher (svref (watchers socket) 1)))
       (appendf (writes socket)
  
positive.code:           (when (= (incf (svref data 1) written) (length buffer))
              (pop (writes socket))
              (defer
                (format t "Invoking callback: ~A~%" callback)
                (funcall callback socket))))
  
          (progn
  
negative.code: 
  ;; Class
  (defclass socket (emitter)
    ((sock :initform (sockets:make-socket :ipv6 nil :reuse-address t)
           :initarg :sock
           :accessor sock)
     (watchers :initform (vector nil nil)
  