When reading an image from a stream, stop after the first successful read

While trying to debug a very perplexing intermittent "Unparsable image" exception that I've been getting, I've noticed that the logic to read from the stream, does not seem quite right to me. It seems that at best it's doing more work that it may need to, and at worst might actually be causing my issue (if the last reader fails, but others succeed). 

To the best of my understanding, there should be no need to try all of the readers, so long as you have one that works. I also recognize that I might be missing something. Am I missing something?