equal
deleted
inserted
replaced
55 promise._pending_on_rejected = nil; |
55 promise._pending_on_rejected = nil; |
56 return true; |
56 return true; |
57 end |
57 end |
58 |
58 |
59 local function new_resolve_functions(p) |
59 local function new_resolve_functions(p) |
60 local resolved = false; |
|
61 local function _resolve(v) |
60 local function _resolve(v) |
62 if resolved then return; end |
|
63 resolved = true; |
61 resolved = true; |
64 if is_promise(v) then |
62 if is_promise(v) then |
65 v:next(new_resolve_functions(p)); |
63 v:next(new_resolve_functions(p)); |
66 elseif promise_settle(p, "fulfilled", next_fulfilled, p._pending_on_fulfilled, v) then |
64 elseif promise_settle(p, "fulfilled", next_fulfilled, p._pending_on_fulfilled, v) then |
67 p.value = v; |
65 p.value = v; |
68 end |
66 end |
69 |
67 |
70 end |
68 end |
71 local function _reject(e) |
69 local function _reject(e) |
72 if resolved then return; end |
|
73 resolved = true; |
|
74 if promise_settle(p, "rejected", next_rejected, p._pending_on_rejected, e) then |
70 if promise_settle(p, "rejected", next_rejected, p._pending_on_rejected, e) then |
75 p.reason = e; |
71 p.reason = e; |
76 end |
72 end |
77 end |
73 end |
78 return _resolve, _reject; |
74 return _resolve, _reject; |