code: func (c *Client) CAS(vb uint16, k string, f CasFunc,
  	initexp int) (*gomemcached.MCResponse, error) {
  	var state CASState
  	for c.CASNext(vb, k, initexp, &state) {
  		newValue, operation := f(state.Value)
  		if operation == CASQuit || (operation == CASDelete && state.Value == nil) {
  			return nil, operation
  		}
  		state.Value = newValue
  	}
  	return state.resp, state.Err
  }
docs: // CAS performs a CAS transform with the given function.
  //
  // If the value does not exist, a nil current value will be sent to f.