add listenOnce assertion
fix browser compat
fix listenonce