anchor.diff:      (t form)))
   
   (defmacro with-close-on-error ((var value) &body body)
  -  "Bind `VAR' to `VALUE', execute `BODY' as implicit PROGN and return `VAR'.
  -If a non-local exit occurs during the execution of `BODY' call CLOSE with :ABORT T on `VAR'."
  -  (with-gensyms (errorp)
  -    `(let ((,var ,value) (,errorp t))
  -       (unwind-protect
  -            (multiple-value-prog1 (locally ,@body ,var) (setf ,errorp nil))
  -         (when (and ,var ,errorp) (close ,var :abort t))))))
  +  "Bind `VAR' to `VALUE' and execute `BODY' as implicit PROGN.
  +If a non-local exit occurs during the execution of `BODY',
  +call CLOSE with :ABORT T on `VAR'."
  +  `(let ((,var ,value))
  +     (unwind-protect-case () ,@body
  +       (:abort (close ,var :abort t)))))
   
   (defmacro %create-internet-socket (family &rest args)
     `(case ,family
  
positive.code:                     :reuse-address reuse-address))
      (when (plusp remote-port)
        (connect socket (ensure-hostname remote-host)
                 :port remote-port))))
  
  (define-socket-creator (:internet :stream :active)
      (family ef &key keepalive nodelay (reuse-address t)
  
negative.code:       (bind-address socket (ensure-hostname local-host)
                      :port local-port
                      :reuse-address reuse-address)
        (listen-on socket :backlog backlog)))
    (values socket))
  
  (define-socket-creator (:internet :stream :passive)
      (family ef &key interface (reuse-address t)
  