My comment was mainly about serviceWorker.ready.then.
I've never seen a JS API using such pattern - the name of the event as a property which is a promise.
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(.....