Clone `listeners` array so that it can be mutated without affecting `emit` and `poll`
Introduce `one` which automatically removes its listener after the first callback