# HG changeset patch # User Kim Alvefur # Date 1569775355 -7200 # Node ID 7b48b620164c5ef41caf4bc9e8f94323f398af9a # Parent b2ce3300f26a6291b1abd26d4b7611ecbe02f3c9 util.async: Add function for waiting on promises and unpacking the results diff -r b2ce3300f26a -r 7b48b620164c util/async.lua --- a/util/async.lua Sun Sep 29 17:34:47 2019 +0200 +++ b/util/async.lua Sun Sep 29 18:42:35 2019 +0200 @@ -246,9 +246,25 @@ return pcall(checkthread); end +local function wait(promise) + local async_wait, async_done = waiter(); + local ret, err = nil, nil; + promise:next( + function (r) ret = r; end, + function (e) err = e; end) + :finally(async_done); + async_wait(); + if ret then + return ret; + else + return nil, err; + end +end + return { ready = ready; waiter = waiter; guarder = guarder; runner = runner; + wait = wait; };