Race condition isn't the right phrase.  I was thinking, why not, instead of directly calling unregisterSalesforceNotifications here, have SFPushNotificationManager subscribe to the logout event of SFAuthenticationManager, and make it responsible for unregistering.  But then I realized that, by the time SFPushNotificationManager received the logout event, the credentials it needs to unregister would already be wiped out by the logout process.

Kind of makes me want to have a delegate paradigm that could call pre-logout activities like this (SmartStore wipe would be another good candidate).  But in the absence of that, this is probably the best place to make the call.