code: func (cr ChainReader) RemainingErr() (int64, error) {
  	result := int64(0)
  	for _, source := range cr {
  		if source == nil {
  			continue
  		}
  		r, ok := source.(interface {
  			Len() int
  		})
  		if !ok {
  			return 0, errors.New("chainreader: can only calculate Remaining for instances implementing Len()")
  		}
  		result += int64(r.Len())
  	}
  	return result, nil
  }
docs: // RemainingErr returns the amount of data left in the ChainReader. An error is
  // returned if any reader in the chain is not either nil or a bytes.Reader.
  //
  // Note that this method iterates over all readers in the chain each time that
  // it's called.