code: func (c *Connection) openChannel() (*Channel, error) {
  	ch, err := c.allocateChannel()
  	if err != nil {
  		return nil, err
  	}
  
  	if err := ch.open(); err != nil {
  		c.releaseChannel(ch.id)
  		return nil, err
  	}
  	return ch, nil
  }
docs: // openChannel allocates and opens a channel, must be paired with closeChannel