util/async.lua
changeset 5792 aac4c6147647
parent 5791 2c98061b6b1e
child 5793 e8c79796ead9
--- 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