code: func (c *Connection) newAPIChannel(reqChanBufSize, replyChanBufSize int) (*Channel, error) {
  	if c == nil {
  		return nil, errors.New("nil connection passed in")
  	}
  
  	// create new channel
  	chID := uint16(atomic.AddUint32(&c.maxChannelID, 1) & 0x7fff)
  	channel := newChannel(chID, c, c.codec, c, reqChanBufSize, replyChanBufSize)
  
  	// store API channel within the client
  	c.channelsLock.Lock()
  	c.channels[chID] = channel
  	c.channelsLock.Unlock()
  
  	// start watching on the request channel
  	go c.watchRequests(channel)
  
  	return channel, nil
  }
docs: // NewAPIChannelBuffered returns a new API channel for communication with VPP via govpp core.
  // It allows to specify custom buffer sizes for the request and reply Go channels.