Okay, I follow what you are saying. I can do this no problem - however in my calling code, I am not actually "reading" the data into memory. I am simply "touching" it so Jar Indexing decides to download the JAR.
My code looks like:
This is the function that blocks until the JAR is finished downloading. Now I could wrap this in a subclass like you suggest, such as
but this will just block in the same way as before. My overloaded read methods would never be executed.