code: func deleteProject(c context.Context, projectId string) error {
  	return datastore.RunInTransaction(c, func(c context.Context) error {
  		project := &Project{Name: projectId}
  		ancestorKey := datastore.KeyForObj(c, project)
  		return parallel.FanOutIn(func(work chan<- func() error) {
  			work <- func() error {
  				return removeDescendants(c, "Builder", ancestorKey, nil)
  			}
  			work <- func() error {
  				return removeDescendants(c, "EmailTemplate", ancestorKey, nil)
  			}
  			work <- func() error {
  				return datastore.Delete(c, project)
  			}
  		})
  	}, nil)
  }
docs: // deleteProject deletes a Project entity and all of its descendants.