Software / code / prosody
Comparison
util/promise.lua @ 9517:b1c6ede17592
util.promise: Add promise.try()
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 18 Oct 2018 18:03:31 +0100 |
| parent | 9515:2571c65b972f |
| child | 9546:c93496785022 |
comparison
equal
deleted
inserted
replaced
| 9516:038446c50630 | 9517:b1c6ede17592 |
|---|---|
| 49 end | 49 end |
| 50 local function _reject(e) | 50 local function _reject(e) |
| 51 if resolved then return; end | 51 if resolved then return; end |
| 52 resolved = true; | 52 resolved = true; |
| 53 if is_promise(e) then | 53 if is_promise(e) then |
| 54 print ("WOAH") assert(false) | |
| 54 e:next(new_resolve_functions(p)); | 55 e:next(new_resolve_functions(p)); |
| 55 elseif promise_settle(p, "rejected", next_rejected, p._pending_on_rejected, e) then | 56 elseif promise_settle(p, "rejected", next_rejected, p._pending_on_rejected, e) then |
| 56 p.reason = e; | 57 p.reason = e; |
| 57 end | 58 end |
| 58 end | 59 end |
| 115 return new(function (_, _reject) | 116 return new(function (_, _reject) |
| 116 _reject(v); | 117 _reject(v); |
| 117 end); | 118 end); |
| 118 end | 119 end |
| 119 | 120 |
| 121 local function try(f) | |
| 122 return resolve():next(function () return f(); end); | |
| 123 end | |
| 124 | |
| 120 function promise_methods:next(on_fulfilled, on_rejected) | 125 function promise_methods:next(on_fulfilled, on_rejected) |
| 121 return new(function (resolve, reject) --luacheck: ignore 431/resolve 431/reject | 126 return new(function (resolve, reject) --luacheck: ignore 431/resolve 431/reject |
| 122 self:_next( | 127 self:_next( |
| 123 on_fulfilled and wrap_handler(on_fulfilled, resolve, reject) or nil, | 128 on_fulfilled and wrap_handler(on_fulfilled, resolve, reject) or nil, |
| 124 on_rejected and wrap_handler(on_rejected, resolve, reject) or nil | 129 on_rejected and wrap_handler(on_rejected, resolve, reject) or nil |
| 140 new = new; | 145 new = new; |
| 141 resolve = resolve; | 146 resolve = resolve; |
| 142 reject = reject; | 147 reject = reject; |
| 143 all = all; | 148 all = all; |
| 144 race = race; | 149 race = race; |
| 150 try = try; | |
| 145 } | 151 } |