code: func (s *fsCacheStore) delete(id string) error {
  	src, ok := s.sources[id]
  	if !ok {
  		return nil
  	}
  	if len(src.refs) > 0 {
  		return errors.Errorf("can't delete %s because it has active references", id)
  	}
  	delete(s.sources, id)
  	if err := s.db.Update(func(tx *bolt.Tx) error {
  		return tx.DeleteBucket([]byte(id))
  	}); err != nil {
  		return err
  	}
  	return s.fs.Remove(src.BackendID)
  }
docs: // keep mu while calling this