As far as I can tell, the timeout has no effect as long as the request sits in the send queue. If there are no connections consuming requests from the queue nothing looks at the request to determine if it has timed out.
In addition, if the cancellationtoken has timed out, the request is not re-queued. Its just dropped and the operationRequest.CompletionTask is never completed, even when the connection comes back up. Some code needs to be added to ensure requests are completed in this case.
Also, it looks like there has been an attempt to fix the reconnection issue by calling CleanupDeadConnectionsAsync() from DataFlowConnectionPool.SendAsync
I suspect it is returning the wrong task in this case. I am still trying to understand exactly what happens in this case.