code: func (c *asyncConnHdl) startup() {
  
  	protocol := c.spec().protocol
  
  	go c.worker(manager, "manager", managementTask, c.managerCtl, nil)
  	c.managerCtl <- start
  
  	// heartbeat only on REDIS_DB protocol
  	if protocol == REDIS_DB {
  		go c.worker(heartbeatworker, "heartbeat", heartbeatTask, c.heartbeatCtl, c.feedback)
  		c.heartbeatCtl <- start
  	}
  
  	go c.worker(requesthandler, "request-processor", reqProcessingTask, c.reqProcCtl, c.feedback)
  	c.reqProcCtl <- start
  
  	var rspProcTask workerTask
  	switch protocol {
  	case REDIS_DB:
  		rspProcTask = dbRspProcessingTask
  	case REDIS_PUBSUB:
  		rspProcTask = msgProcessingTask
  		//		cmd := SUBSCRIBE
  		//		c.pendingResps <- &asyncRequestInfo{0, 0, &cmd, nil, nil, nil}
  	}
  	go c.worker(responsehandler, "response-processor", rspProcTask, c.rspProcCtl, c.feedback)
  	c.rspProcCtl <- start
  
  	// REVU - pretty please TODO do the customized log
  	//	log.Printf("<INFO> %s - READY", c)
  }
docs: // responsible for managing the various moving parts of the asyncConnHdl