code: func (conn *Connection) ChanQueueSubscribe(name string, subject string, group string, capacity int) (chan *ConnectorMessage, error) {
  	var err error
  
  	s := &channelSubscription{
  		in:   make(chan *nats.Msg, capacity),
  		out:  make(chan *ConnectorMessage, capacity),
  		quit: make(chan interface{}, 1),
  	}
  
  	conn.subMu.Lock()
  	conn.chanSubscriptions[name] = s
  	conn.subMu.Unlock()
  
  	copier := func(subs *channelSubscription) {
  		for {
  			select {
  			case m := <-subs.in:
  				subs.out <- &ConnectorMessage{Data: m.Data, Reply: m.Reply, Subject: m.Subject}
  			case <-subs.quit:
  				return
  			}
  		}
  	}
  
  	go copier(s)
  
  	conn.logger.Debugf("Subscribing to %s in group '%s' on server %s", subject, group, conn.ConnectedServer())
  
  	s.subscription, err = conn.nats.ChanQueueSubscribe(subject, group, s.in)
  	if err != nil {
  		return nil, fmt.Errorf("Could not subscribe to subscription %s: %s", name, err)
  	}
  
  	return s.out, nil
  }
docs: // ChanQueueSubscribe creates a channel of a certain size and subscribes to a queue group.
  //
  // The given name would later be used should a unsubscribe be needed