code: func (r *LazyChunkReader) Size(ctx context.Context, quitC chan bool) (n int64, err error) {
  	metrics.GetOrRegisterCounter("lazychunkreader.size", nil).Inc(1)
  
  	var sp opentracing.Span
  	var cctx context.Context
  	cctx, sp = spancontext.StartSpan(
  		ctx,
  		"lcr.size")
  	defer sp.Finish()
  
  	log.Debug("lazychunkreader.size", "addr", r.addr)
  	if r.chunkData == nil {
  		startTime := time.Now()
  		chunkData, err := r.getter.Get(cctx, Reference(r.addr))
  		if err != nil {
  			metrics.GetOrRegisterResettingTimer("lcr.getter.get.err", nil).UpdateSince(startTime)
  			return 0, err
  		}
  		metrics.GetOrRegisterResettingTimer("lcr.getter.get", nil).UpdateSince(startTime)
  		r.chunkData = chunkData
  	}
  
  	s := r.chunkData.Size()
  	log.Debug("lazychunkreader.size", "key", r.addr, "size", s)
  
  	return int64(s), nil
  }
docs: // Size is meant to be called on the LazySectionReader