The user’s OSClient object becomes out of scope during reauthentication because authenticateV3 does not update the OSClient object. Instead it returns a new OSClient object which is never passed back to the user during reauthentication. The user is left with the out of scope OSClient object and that OSClient's access is outdated. This becomes very problematic in multi-threaded applications.
OSAuthenticator.authenticateV2 handles it properly.