diff --git a/client.go b/client.go index e2a4dd8..5debb87 100644 --- a/client.go +++ b/client.go @@ -632,18 +632,24 @@ func (c *Client) reader(t transport, disconnectCh chan struct{}) { func (c *Client) runHandlerSync(fn func()) { waitCh := make(chan struct{}) c.mu.RLock() - c.cbQueue.push(func(delay time.Duration) { - defer close(waitCh) - fn() - }) + if c.cbQueue != nil { + c.cbQueue.push(func(delay time.Duration) { + defer close(waitCh) + fn() + }) + } c.mu.RUnlock() <-waitCh } func (c *Client) runHandlerAsync(fn func()) { - c.cbQueue.push(func(delay time.Duration) { - fn() - }) + c.mu.RLock() + if c.cbQueue != nil { + c.cbQueue.push(func(delay time.Duration) { + fn() + }) + } + c.mu.RUnlock() } func (c *Client) handle(reply *protocol.Reply) {