Implement listenToOnce via listenTo and on

Avoids unnecessarily calling `once` (since our wrapping here unbinds the callback once done anyway.)
How will this get deregistered