diff --git a/pool.go b/pool.go index 0143d90..e08e538 100644 --- a/pool.go +++ b/pool.go @@ -113,6 +113,10 @@ func (p *Pool) Add(rawURL string) error { // Check for existing connection in pool p.mu.Lock() + if p.closed { + p.mu.Unlock() + return errors.NewPoolError("pool is closed") + } _, exists := p.connections[url] p.mu.Unlock() diff --git a/pool_test.go b/pool_test.go index e39c6c2..dd80a97 100644 --- a/pool_test.go +++ b/pool_test.go @@ -25,13 +25,14 @@ func TestPoolAdd(t *testing.T) { err = pool.Add("wss://test") assert.NoError(t, err) - select { - case event := <-pool.events: - assert.Equal(t, "wss://test", event.URL) - assert.Equal(t, EventConnected, event.Kind) - case <-time.After(100 * time.Millisecond): - t.Fatal("timeout waiting for Connected event") - } + assert.Eventually(t, func() bool { + select { + case event := <-pool.events: + return event.URL == "wss://test" && event.Kind == EventConnected + default: + return false + } + }, testTimeout, testTick) pool.Close() })