            (retv (fstar-subp--query-and-wait query 0.01)))
       (pcase retv
         (`(t . (,success ,results))
-         (fstar-subp--info-continuation
-          (apply-partially #'fstar--eldoc-continuation #'identity)
-          (point) success results))
+         (funcall (fstar-subp--info-wrapper
+                   (apply-partially #'fstar--eldoc-continuation #'identity)
+                   (point))
+                  success results))
         (`(needs-callback . ,_)
          (setf (cdr retv)
-               (apply-partially #'fstar-subp--info-continuation
-                                (apply-partially #'fstar--eldoc-continuation #'eldoc-message)
-                                (point))))))))
+               (fstar-subp--info-wrapper
+                (apply-partially #'fstar--eldoc-continuation #'eldoc-message)
+                (point))))))))
 
 (defun fstar--eldoc-truncate-message (fn &rest args)
   "Forward ARGS to FN within scope of binding for `message-truncate-lines'."

       :type type
       :doc doc))))

(defun fstar-subp--info-continuation (continuation pos success response)
  "Handle the results (SUCCESS and RESPONSE) of an #info query at POS.
If response is valid, forward results to CONTINUATION.  With nil
POS, this function can also handle results of position-less #info queries."
  (if-let* ((success success)
            (point-did-not-move (or (null pos) (eq (point) pos)))
            (info (fstar-subp--parse-info response)))
      (funcall continuation info)
    (funcall continuation nil)))

(defun fstar--eldoc-continuation (continuation info)
  "Pass highlighted type information from INFO to CONTINUATION."

  (if (fstar-subp-available-p)
      (fstar-subp--query
       (fstar-subp--positionless-info-query (fstar-subp-company--candidate-fqn candidate))
       (fstar-subp--info-wrapper continuation nil))
    (funcall continuation 'busy)))

(defun fstar-subp-company--meta-continuation (callback info)
