Optimized streamReadFun() to cache it's read buff 

Did some rough profiling and testing, seems good. Only minor perf wins, but take what we can get.