- join reconnect thread when finished to clean up thread resources.
- don't spawn a new thread for every attempt to open a stream while reconnecting.