branch: elpa/hyperdrive
commit ad0dba6928280c1668825dd8288d9b2ef5ad55af
Author: Joseph Turner <jos...@ushin.org>
Commit: Joseph Turner <jos...@ushin.org>

    Fix: (he/api) Handle synchronous case
---
 hyperdrive-lib.el | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/hyperdrive-lib.el b/hyperdrive-lib.el
index 7bbb3daecf..ff8f4bf2bb 100644
--- a/hyperdrive-lib.el
+++ b/hyperdrive-lib.el
@@ -218,12 +218,14 @@ REST is passed to `h/api', which see.
   (cl-assert (null (plist-get rest :as)))
   (plist-put rest :as 'response)
 
-  (pcase-let* (((map :then) rest)
-               (then* (lambda (response)
-                        (he//api-then entry response)
-                        (funcall then response))))
-    (plist-put rest :then then*)
-    (apply #'h/api method (he/url entry) rest)))
+  (pcase-let* (((map :then) rest))
+    (when then
+      (plist-put rest :then (lambda (response)
+                              (he//api-then entry response)
+                              (funcall then response))))
+    (let ((response (apply #'h/api method (he/url entry) rest)))
+      (unless then (funcall 'he//api-then entry response))
+      response)))
 
 (defun he//api-then (entry response)
   "Update ENTRY's metadata according to RESPONSE.

Reply via email to