diff options
author | Kim Alvefur <zash@zash.se> | 2019-11-16 16:52:31 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2019-11-16 16:52:31 +0100 |
commit | 612b1ffff129320130095099acc13b335aa14b9c (patch) | |
tree | 6e391ff6608608f181e42c92ee6dfd7c534da255 /util/async.lua | |
parent | 6a2b94e8b8629d6571202a34b6ebbd4793fe4abe (diff) | |
parent | 70a81b5ffdb84e5dc082fee557dc9e3af237bc27 (diff) | |
download | prosody-612b1ffff129320130095099acc13b335aa14b9c.tar.gz prosody-612b1ffff129320130095099acc13b335aa14b9c.zip |
Merge 0.11->trunk
Diffstat (limited to 'util/async.lua')
-rw-r--r-- | util/async.lua | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/util/async.lua b/util/async.lua index 20397785..d338071f 100644 --- a/util/async.lua +++ b/util/async.lua @@ -246,9 +246,25 @@ local function ready() 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; }; |