fix read-past-EOF bug, make prefetcher a single goroutine