users: delay result submission
the user change application is blocking (because saving as a whole is blocking) BUT result submission doesn't need to be and indeed need not be because the applyjob is running as part of the save() call stack, and that will set needssave at the very end, effectively undermining any state management done as part of error handling.
effectively this now means that save() sets needsSave=false and then on the next event loop run our error handling kicks in and reevaluates resolvePending on the qml side, potentially setting it true if necessary