The analysis is all nice and dandy, except for being wrong. Interrupted reads are retried, but only up to a certain amount which can be changed. The (perhaps not so good) default is to retry one time.
Nice work tracking this down and supplying a good patch!
You won two internets for fixing this one. Congrats.