Add a workaround to make sure Redis connection is reconnected in ConnectionRestored event

I found an external issue that after Redis restart, sometimes in ConnectionRestored event the Redis connection is not reconnected yet.

This workaround basically make sure the latest value can be restored for Redis Key.
This workaround basically make sure the Rdis connection is reconnected before Open the stream, so it can reduce the chance of the issue #3093 happening which when Send() method runs into an error, the stream will never be opened again until Redis is restarted.

#3095
We shouldn't raise the ConnectionRestored event until the connection is actually restored. This logic should be run before the ConnectedRestored event.