In the following sequence of code, the QCM/QOM::error() function can return incorrect information:
manager->save(good objects)
-> contactsAdded etc signal
-> slot { manager->causeError(); }
-> manager engine save returns
manager->error() == error from causeError(), rather than NoError.
It's even more complicated if the engine itself uses the error within the save function (e.g. return *error == NoError;)