more perf by buffering reads in a queue