onDisconnect get called at unpredictable times, so don't clear provider