code: func (fs *CamliFileSystem) fetchSchemaMeta(ctx context.Context, br blob.Ref) (*schema.Blob, error) {
  	blobStr := br.String()
  	if blob, ok := fs.blobToSchema.Get(blobStr); ok {
  		return blob.(*schema.Blob), nil
  	}
  
  	rc, _, err := fs.fetcher.Fetch(ctx, br)
  	if err != nil {
  		return nil, err
  	}
  	defer rc.Close()
  	blob, err := schema.BlobFromReader(br, rc)
  	if err != nil {
  		Logger.Printf("Error parsing %s as schema blob: %v", br, err)
  		return nil, os.ErrInvalid
  	}
  	if blob.Type() == "" {
  		Logger.Printf("blob %s is JSON but lacks camliType", br)
  		return nil, os.ErrInvalid
  	}
  	fs.blobToSchema.Add(blobStr, blob)
  	return blob, nil
  }
docs: // Errors returned are:
  //    os.ErrNotExist -- blob not found
  //    os.ErrInvalid -- not JSON or a camli schema blob