anchor.diff:    "Grab ALL results from a cursor. Returns a future finished with the final
      array."
     (with-promise (resolve reject)
  -    (let ((token (cursor-token cursor)))
  -      (labels ((append-results (all-results)
  -                 (catcher
  -                   (if (eq (cursor-state cursor) :partial)
  -                       (wait (more sock token)
  -                         (append-results (cl-async-util:append-array all-results (cursor-results cursor))))
  -                       (resolve all-results))
  -                   (t (e) (reject e)))))
  -        (append-results (cursor-results cursor))))))
  +    (cond ((cursorp cursor)
  +           (let ((token (cursor-token cursor)))
  +             (labels ((append-results (all-results)
  +                        (catcher
  +                          (if (eq (cursor-state cursor) :partial)
  +                              (wait (more sock token)
  +                                (append-results (cl-async-util:append-array all-results (cursor-results cursor))))
  +                              (resolve all-results))
  +                          (error (e) (reject e)))))
  +               (append-results (cursor-results cursor)))))
  +          ((arrayp cursor)
  +           (resolve cursor))
  +          (t (error (format nil "to-array: bad cursor given: ~a" cursor))))))
   
   (defun each (sock cursor function)
     "Call the given function on every result in the given cursor."
  
positive.code:         (catcher
            (wait (stop sock cursor)
              (resolve (disconnect sock)))
            (t (e) (reject e)))
          (resolve (disconnect sock)))))
  
  (defun next (sock cursor)
  
negative.code:                        (wait (funcall function result)
                           (get-next)))
                       (resolve))
                   (error (e) (reject e)))))
        (get-next))))
  
  (defun test_ (query-form)
  