Skip to content

Commit

Permalink
fix(promise): promise shouldn't wrapper error
Browse files Browse the repository at this point in the history
Just cache error to throw `UnhandledPromiseRejection`
  • Loading branch information
kevinhwang91 committed Feb 27, 2024
1 parent 274edb0 commit be4d4be
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions lua/promise.lua
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,6 @@ local function buildError(err)
return o
end

---@param errmsg any
---@return PromiseAsyncError | any
local function xpcallMessageWrapper(errmsg)
return type(errmsg) == 'string' and buildError(errmsg) or errmsg
end

local resolvePromise, rejectPromise

---@param promise Promise
Expand Down Expand Up @@ -143,11 +137,13 @@ local function handleQueue(promise)
if func then
local ok, res = xpcall(function()
return func(result)
end, xpcallMessageWrapper)
end, function(errmsg)
newPromise.err = type(errmsg) == 'string' and buildError(errmsg) or errmsg
return errmsg
end)
if ok then
resolvePromise(newPromise, res)
else
newPromise.err = res
rejectPromise(newPromise, res)
end
end
Expand Down Expand Up @@ -194,9 +190,11 @@ local function wrapExecutor(promise, executor, self)
else
return executor(resolve, reject)
end
end, xpcallMessageWrapper)
end, function(errmsg)
promise.err = type(errmsg) == 'string' and buildError(errmsg) or errmsg
return errmsg
end)
if not ok and not called then
promise.err = res
reject(res)
end
end
Expand Down

0 comments on commit be4d4be

Please sign in to comment.