+(defun gnus-async-wait-for-article (article)
+ "Wait until ARTICLE is no longer the currently-being-fetched article."
+ (save-excursion
+ (gnus-async-set-buffer)
+ (let ((proc (nntp-find-connection (current-buffer)))
+ (nntp-server-buffer (current-buffer))
+ (nntp-have-messaged nil)
+ (tries 0))
+ (when proc
+ (condition-case nil
+ ;; FIXME: we could stop waiting after some
+ ;; timeout, but this is the wrong place to do it.
+ ;; rather than checking time-spent-waiting, we
+ ;; should check time-since-last-output, which
+ ;; needs to be done in nntp.el.
+ (while (eq article gnus-async-current-prefetch-article)
+ (incf tries)
+ (when (nntp-accept-process-output proc)
+ (setq tries 0))
+ (when (and (not nntp-have-messaged)
+ (= tries 3))
+ (gnus-message 5 "Waiting for async article...")
+ (setq nntp-have-messaged t)))
+ (quit
+ ;; if the user interrupted on a slow/hung connection,
+ ;; do something friendly.
+ (when (> tries 3)
+ (setq gnus-async-current-prefetch-article nil))
+ (signal 'quit nil)))
+ (when nntp-have-messaged
+ (gnus-message 5 ""))))))
+
+(defun gnus-async-delete-prefetched-entry (entry)