anchor.diff:  
   	id, err := replaceVars(d, config, "projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}")
   	if err != nil {
  -	return nil, err
  +		return nil, err
     }
  +
   	d.SetId(id)
  +
  +	if _, err := containerNodePoolAwaitRestingState(config, d.Id(), d.Timeout(schema.TimeoutCreate)); err != nil {
  +		return nil, err
  +	}
   
   	return []*schema.ResourceData{d}, nil
   }
  
positive.code: 	}
  
  	name := getNodePoolName(d.Id())
  
  	timeoutInMinutes := int(d.Timeout(schema.TimeoutDelete).Minutes())
  
  
negative.code: 	splits := strings.Split(id, "/")
  	return splits[len(splits)-1]
  }
  
  var containerNodePoolRestingStates = RestingStates{
  	"RUNNING":            ReadyState,
  	"RUNNING_WITH_ERROR": ErrorState,
  	"ERROR":              ErrorState,
  }
  
  // takes in a config object, full node pool name, and the current CRUD action timeout
  // returns a state with no error if the state is a resting state, and the last state with an error otherwise
  func containerNodePoolAwaitRestingState(config *Config, name string, timeout time.Duration) (state string, err error) {
  	err = resource.Retry(timeout, func() *resource.RetryError {
  		nodePool, gErr := config.clientContainerBeta.Projects.Locations.Clusters.NodePools.Get(name).Do()
  		if gErr != nil {
  			return resource.NonRetryableError(gErr)
  		}
  
  		state = nodePool.Status
  		switch stateType := containerNodePoolRestingStates[state]; stateType {
  		case ReadyState:
  			log.Printf("[DEBUG] NodePool %q has status %q with message %q.", name, state, nodePool.StatusMessage)
  			return nil
  		case ErrorState:
  			log.Printf("[DEBUG] NodePool %q has error state %q with message %q.", name, state, nodePool.StatusMessage)
  			return nil
  		default:
  			return resource.RetryableError(fmt.Errorf("NodePool %q has state %q with message %q", name, state, nodePool.StatusMessage))
  		}
  	})
  
  	return state, err
  }
  