anchor.diff:       :documentation "Holds data sent on the socket before it's connected.")
      (connected :accessor socket-connected :initarg :connected :initform nil)
      (closed :accessor socket-closed :initarg :closed :initform nil)
  -   (closing :accessor socket-closing :initform nil)
      (direction :accessor socket-direction :initarg :direction :initform nil)
      (drain-read-buffer :accessor socket-drain-read-buffer :initarg :drain-read-buffer :initform t))
     (:documentation "Wraps around a libevent bufferevent socket."))
  
positive.code: 
  (defun check-socket-open (socket)
    "Throw a socket-closed condition if given a socket that's closed."
    (when (typep socket 'socket)
      (when (or (socket-closed socket)
                (socket-closing socket))
        (error 'socket-closed :code -1 :msg "Trying to operate on a closed socket" :socket socket))))
  
  (defun socket-closed-p (socket)
    "Return whether a socket is closed or not."
  
negative.code: (defmethod close-socket ((socket socket) &key force)
    "Close and free a socket and all of it's underlying structures."
    (check-socket-open socket)
    (let* ((uvstream (socket-c socket))
           (data (deref-data-from-pointer uvstream))
           (read-timeout (car (getf data :read-timeout)))
  