The new web APIs are promise-ified by default rather than using the callback model of the past. So rather than register(callback), it's register().then(...).
Whether this is a good thing or not is another question I don't know the answer to.
Whether this is a good thing or not is another question I don't know the answer to.
A manager object/class also usually rings a bell.
Not that I'm an API specialist but I would rather implement it as:
document.addEventListener("serviceready", function() {
window.pushNotification.register().then(.....
navigator.serviceWorker.ready.then(function(){...
version is preferable to document.addEventListener("serviceready", function() {
because A) you don't have to worry about removing your event listener after the fact, and B) if the event has already happened, then your callback will be called immediately.