code: func (c *Conn) Receive() (reply interface{}, err error) {
  	if c.ReceiveWait {
  		<-c.ReceiveNow
  	}
  
  	if len(c.queue) == 0 && len(c.replies) == 0 {
  		if len(c.SubResponses) > 0 {
  			reply, err = c.SubResponses[0].Response, c.SubResponses[0].Error
  			c.SubResponses = c.SubResponses[1:]
  			return
  		}
  		return nil, fmt.Errorf("no more items")
  	}
  
  	if err := c.Flush(); err != nil {
  		return nil, err
  	}
  
  	reply, err = c.replies[0].reply, c.replies[0].err
  	c.replies = c.replies[1:]
  	return
  }
docs: // Receive will process the queue created by the Send method, only one item
  // of the queue is processed by Receive call. It will work as the Do method