I tested to read InputStream (I used GZipInputStream(ByteArrayInputStream)) after it returns -1. Instead of returning -1, it blocks.  So we should use `reachedEOF` here.