Even if we know the file size, we still need to read in a loop in case the read call returns an incomplete result. This was less of an issue previously because we did not use the "one large read" approach for non-plain stream wrappers.