diff --git a/sync/client_conn.go b/sync/client_conn.go index b1cc22d..3348c2e 100644 --- a/sync/client_conn.go +++ b/sync/client_conn.go @@ -20,6 +20,15 @@ func (c *DefaultClient) nextID() (id string) { } func (c *DefaultClient) responsesWorker() { + // sending to channel could panic due to concurrent close + defer func() { + c.wg.Done() + + if err := recover(); err != nil { + c.log.Errorw("panic in responsesWorker", "error", err) + } + }() + for { res, err := c.readSocket() if err != nil { @@ -43,8 +52,6 @@ func (c *DefaultClient) responsesWorker() { ch <- res } } - - c.wg.Done() } func (c *DefaultClient) makeRequest(ctx context.Context, req *sync.Request) (chan *sync.Response, error) {