The C client does support automatic node switching on node failures, but there is a lag (usually 1 - 2 seconds) between node failure and the client dropping that node from the cluster map. During this lag, transactions will continue to be sent to the downed node.
Each client instance periodically polls all nodes for cluster status at default 1 second intervals. When a node goes down, the next cluster status request should result in the node being dropped from the map. The client strictly follows this map when determining transaction destination.
Immediately switching nodes on a transaction timeout is bad idea for a number of reasons.
The client wouldn’t know which node to send the transaction because the new node for that transaction hasn’t been decided yet. This would result in lots of proxies in an already stressed system.
Timeouts can be relatively frequent for applications that must respond by a fixed time.
The client’s view of the cluster map would operate much differently than the server’s cluster map.