diff --git a/basic.go b/basic.go index b81868e..0e02bf0 100644 --- a/basic.go +++ b/basic.go @@ -28,11 +28,12 @@ type emitter struct { dropper func(reflect.Type) } -func (e *emitter) Emit(evt interface{}) { +func (e *emitter) Emit(evt interface{}) error { if atomic.LoadInt32(&e.closed) != 0 { - panic("emitter is closed") + return fmt.Errorf("emitter is closed") } e.n.emit(evt) + return nil } func (e *emitter) Close() error { diff --git a/basic_test.go b/basic_test.go index b3a8dcd..c2aebe2 100644 --- a/basic_test.go +++ b/basic_test.go @@ -109,18 +109,13 @@ func TestEmitOnClosed(t *testing.T) { t.Fatal(err) } em.Close() - - defer func() { - r := recover() - if r == nil { - t.Errorf("expected panic") - } - if r.(string) != "emitter is closed" { - t.Error("unexpected message") - } - }() - - em.Emit(EventA{}) + err = em.Emit(EventA{}) + if err == nil { + t.Errorf("expected panic") + } + if err.Error() != "emitter is closed" { + t.Error("unexpected message") + } } func TestClosingRaces(t *testing.T) {