--- a/util/async.lua Mon Aug 12 11:50:27 2013 +0100
+++ b/util/async.lua Mon Aug 12 12:08:51 2013 +0100
@@ -28,14 +28,15 @@
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