code: func (api *API) RemoveNode(id string) (*Node, error) {
  	if err := api.validate(apiRemoveNode); err != nil {
  		return nil, errors.Wrap(err, "validating api method")
  	}
  
  	removeNode := api.cluster.nodeByID(id)
  	if removeNode == nil {
  		if !api.cluster.topologyContainsNode(id) {
  			return nil, errors.Wrap(ErrNodeIDNotExists, "finding node to remove")
  		}
  		removeNode = &Node{
  			ID: id,
  		}
  	}
  
  	// Start the resize process (similar to NodeJoin)
  	err := api.cluster.nodeLeave(id)
  	if err != nil {
  		return removeNode, errors.Wrap(err, "calling node leave")
  	}
  	return removeNode, nil
  }
docs: // RemoveNode puts the cluster into the "RESIZING" state and begins the job of
  // removing the given node.