code: func (c *Client) watch(resp func(response keyval.BytesWatchResp), dataChan chan keyedData, closeChan chan string, key string) {
  	for {
  		select {
  		case keyedData, ok := <-dataChan:
  			if !ok {
  				return
  			}
  			if keyedData.Op == datasync.Delete || !bytes.Equal(keyedData.PrevValue, keyedData.Value) {
  				resp(&keyedData.watchResp)
  			}
  		case <-closeChan:
  			return
  		}
  	}
  }
docs: // Awaits changes from data channel, prepares responses and sends them to the response function