diff options
author | Kim Alvefur <zash@zash.se> | 2019-12-24 00:39:45 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2019-12-24 00:39:45 +0100 |
commit | 929103b8672e1395eedd663fb172a91ce197ec33 (patch) | |
tree | 94b4ebcb9443e8e6751e1903ade3c9dc8ec9d678 /util/async.lua | |
parent | b22125f0645b3281d99843dcdb7b44e92b9167cd (diff) | |
parent | cf87960bda697b3727b5b62ab8c983a48b8c5314 (diff) | |
download | prosody-929103b8672e1395eedd663fb172a91ce197ec33.tar.gz prosody-929103b8672e1395eedd663fb172a91ce197ec33.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; }; |