Indeed we should actually never try to reconnect. According to Zookeeper's documentation, when a disconnected state is reached, the Zookeeper client automatically tries to reconnect, possibly to a different server from the Zookeeper ensemble. So we shouldn't do anything there.
If the connection is expired, it means that Zookeeper server considered the node is lost, it removes related ephemeral nodes and notifies related watchers. In that case, reconnection logic would actually be quite complex, and it is safer to fail fast and actually kill the current node. The current partition will be picked automatically by a standby S4 node.