anchor.diff:            (push cb-wrapped (future-callbacks future))
             (run-future future))
           ;; not a future, just a value. run the callback directly
  -        (apply cb-wrapped future-values))))
  +        (apply cb-wrapped future-values))
  +    cb-return-future))
   
   (defmacro attach (future-gen cb)
     "Macro wrapping attachment of callback to a future (takes multiple values into
  
positive.code:    (preserve-callbacks :accessor future-preserve-callbacks :initarg :preserve-callbacks :initform nil
      :documentation "When nil (the default) detaches callbacks after running
                      future.")
     (finished :accessor future-finished :initform nil
      :documentation "Marks if a future has been finished or not.")
     (events :accessor future-events :initform nil
  
negative.code:      future. Also supports attaching callbacks to the future such that they will
       be called with the computed value(s) when ready."))
  
  (defun make-future (&key preserve-callbacks (reattach-callbacks t))
    "Create a blank future."
    (make-instance 'future :preserve-callbacks preserve-callbacks
                           :reattach-callbacks reattach-callbacks))
  
  (defun futurep (future)
    "Is this a future?"
  