aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--util/async.lua9
1 files changed, 5 insertions, 4 deletions
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