Solved! Go to Solution.
You're close, but still not quite seeing the big picture.
When the validation succeeds, you need to set a variable (in the closure) and then call submit(). That submit() will call your onValidate listener again, but you check for that variable to see if the extended validation has already passed. No infinite loop.