// Start the Jira client goroutine func Start(config *model.Config, wg *sync.WaitGroup, commandrouter *commandrouter.Router, outChan chan *model.ChatMessage, done chan struct{}) { wg.Add(1) httpClient := http.Client{} httpClient.Timeout = time.Duration(config.RequestTimeout) * time.Millisecond jiraClient, err := jira.NewClient(nil, config.JiraUrl) if err != nil { panic(err) } processor := &JiraCommands{ Client: jiraClient, } incoming, err := commandrouter.AddDestination("JiraCommands", commands) if err != nil { panic(err) } go func() { Loop: for { select { case match := <-incoming: match.Response <- processor.Process(match.Tag, match.Message) case <-done: break Loop } } wg.Done() }() }