anchor.diff:        (bt:destroy-thread worker)))
     (setf (workers pool) (list))
   
  -  (format t "Destroying worker sockets.~%")
  +  (format t "Destroying worker socket.~%")
     (when-let (sock (work-sock pool))
  -    (zmq:close (work-sock pool)))
  +    (setf (work-sock pool) nil)
  +    (zmq:close sock))
  +  (format t "Destroying result socket.~%")
     (when-let (sock (result-sock pool))
  +    (setf (result-sock pool) nil)
       (close sock))
   
     (format t "TODO: Fail remaining callbacks in ~A~%" (work pool)))
  
positive.code:    (fail :initarg :fail
           :initform (lambda (condition) (declare (ignore condition)))
           :documentation "Invoked on a failed run of `thunk' with the condition signaled in the original thread.")))
  
negative.code:             :accessor workers
              :documentation "The collection of worker threads.")
  
     (work :initform (make-safe-hash-table :test 'equalp)
           :accessor work
           :documentation "A mapping of string job ids to `job' objects
  scheduled or running in the thread pool.")))
  