From 9dc2cd14952bd1e26e9073428c79b894d280780b Mon Sep 17 00:00:00 2001 From: William Boman Date: Wed, 23 Mar 2022 23:40:04 +0100 Subject: feat(async): allow for a.promisify to reject (#557) --- lua/nvim-lsp-installer/core/async/init.lua | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'lua') diff --git a/lua/nvim-lsp-installer/core/async/init.lua b/lua/nvim-lsp-installer/core/async/init.lua index 85f4c83c..6ecb5a61 100644 --- a/lua/nvim-lsp-installer/core/async/init.lua +++ b/lua/nvim-lsp-installer/core/async/init.lua @@ -37,11 +37,23 @@ local function table_pack(...) return { n = select("#", ...), ... } end -local function promisify(async_fn) +---@param async_fn fun(...) +---@param should_reject_err boolean|nil @Whether the provided async_fn takes a callback with the signature `fun(err, result)` +local function promisify(async_fn, should_reject_err) return function(...) local args = table_pack(...) return await(function(resolve, reject) - args[args.n + 1] = resolve + if should_reject_err then + args[args.n + 1] = function(err, result) + if err then + reject(err) + else + resolve(result) + end + end + else + args[args.n + 1] = resolve + end local ok, err = pcall(async_fn, unpack(args, 1, args.n + 1)) if not ok then reject(err) -- cgit v1.2.3-70-g09d2