*: use TeeReader to reduce I/O in CAS

For consistency I'm going to pass in the struct instead of the method so it'll be used