code: func catFileBatch(revs *StringChannelWrapper, lockableSet *lockableNameSet) (*PointerChannelWrapper, chan string, error) {
  	pointerCh := make(chan *WrappedPointer, chanBufSize)
  	lockableCh := make(chan string, chanBufSize)
  	errCh := make(chan error, 5) // shared by 2 goroutines & may add more detail errors?
  	if err := runCatFileBatch(pointerCh, lockableCh, lockableSet, revs, errCh); err != nil {
  		return nil, nil, err
  	}
  	return NewPointerChannelWrapper(pointerCh, errCh), lockableCh, nil
  }
docs: // catFileBatch uses git cat-file --batch to get the object contents
  // of a git object, given its sha1. The contents will be decoded into
  // a Git LFS pointer. revs is a channel over which strings containing Git SHA1s
  // will be sent. It returns a channel from which point.Pointers can be read.