-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpromise.lisp
More file actions
30 lines (21 loc) · 779 Bytes
/
promise.lisp
File metadata and controls
30 lines (21 loc) · 779 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(in-package :parenboost)
(defpsmacro make-promise (fn)
`(make *promise ,fn))
(defpsmacro promise-all (iterable)
`(chain *promise (all ,iterable)))
(defpsmacro promise-all-settled (iterable)
`(chain *promise (all-settled ,iterable)))
(defpsmacro promise-any (iterable)
`(chain *promise (any ,iterable)))
(defpsmacro promise-race (iterable)
`(chain *promise (race ,iterable)))
(defpsmacro promise-reject (reason)
`(chain *promise (reject ,reason)))
(defpsmacro promise-resolve (val)
`(chain *promise (resolve ,val)))
(defpsmacro promise-try (func &rest args)
`(chain *promise (try ,func ,@args)))
(defpsmacro with-promise ((resolve &optional reject) &body body)
`(make *promise
(lambda (,resolve ,@(when reject `(,reject)))
,@body)))