app/app.go
func (app *App) RemoveUnits(n uint, process string, w io.Writer) error {
	prov, err := app.getProvisioner()
	if err != nil {
		return err
	}
	w = app.withLogWriter(w)
	err = prov.RemoveUnits(app, n, process, w)
	rebuild.RoutesRebuildOrEnqueue(app.Name)
	quotaErr := app.fixQuota()
	if err != nil {
		return err
	}
	return quotaErr
}
func (app *App) RemoveUnits(n uint, process string, w io.Writer) error {
	prov, err := app.getProvisioner()
	if err != nil {
		return err
	}
	w = app.withLogWriter(w)
	err = prov.RemoveUnits(app, n, process, w)
	rebuild.RoutesRebuildOrEnqueue(app.Name)
	quotaErr := app.fixQuota()
	if err != nil {
		return err
	}
	return quotaErr
}
// RemoveUnits removes n units from the app. It's a process composed of
// multiple steps:
//
//     1. Remove units from the provisioner
//     2. Update quota