X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=util%2Fasync.lua;fp=util%2Fasync.lua;h=c81f8639b490b30905af66ac3428e70fe6eedbe0;hb=cb6f85d7c20eb0883135c6257c6ad87aaabab05b;hp=afbaba5c62df52e434b40040118db5fe4de1af63;hpb=40058c485292ff9fb94e94f6d97ad545d23c9bed;p=prosody.git diff --git a/util/async.lua b/util/async.lua index afbaba5c..c81f8639 100644 --- a/util/async.lua +++ b/util/async.lua @@ -28,14 +28,15 @@ local function waiter(num) error("Not running in an async context, see http://prosody.im/doc/developers/async"); end num = num or 1; + local waiting; return function () + if num == 0 then return; end -- already done + waiting = true; coroutine.yield("wait"); end, function () num = num - 1; - if num == 0 then - if not runner_continue(thread) then - error("done() called without wait()!"); - end + if num == 0 and waiting then + runner_continue(thread); end end; end