# HG changeset patch # User Matthew Wild # Date 1376305731 -3600 # Node ID aac4c6147647a8f5afc39fe468ab06dd3f7568ff # Parent 2c98061b6b1effa1fed1b657f821e9318dc1ccf0 util.async: waiter: Remove restriction about wait() being called before done() diff -r 2c98061b6b1e -r aac4c6147647 util/async.lua --- 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