Calling the event's __call() method from within a listener would cause __call() to reenter, which is not handled at all (nor prevented) supported in the current implementation.
This is a non-obvious problematic example:
task_t:new(function()
await("foo")
-- [...]
emit("foo")
end)()