code: func (r *LazyChunkReader) Read(b []byte) (read int, err error) {
  	log.Trace("lazychunkreader.read", "key", r.addr)
  	metrics.GetOrRegisterCounter("lazychunkreader.read", nil).Inc(1)
  
  	read, err = r.ReadAt(b, r.off)
  	if err != nil && err != io.EOF {
  		log.Trace("lazychunkreader.readat", "read", read, "err", err)
  		metrics.GetOrRegisterCounter("lazychunkreader.read.err", nil).Inc(1)
  	}
  
  	metrics.GetOrRegisterCounter("lazychunkreader.read.bytes", nil).Inc(int64(read))
  
  	r.off += int64(read)
  	return read, err
  }
docs: // Read keeps a cursor so cannot be called simulateously, see ReadAt