「Servie WorkerのJavaScriptをHTMLと同じ階層か上位階層に置かないとresolveできない」と書いてある場所
ここで、Service Workerスクリプト(ここではpush.js)はWebアプリのHTMLと同じかより上位のディレクトリに置いたほうがよいのでご注意下さい。例えば、スクリプトの場所js/push.jsのようにしてしまうと、親Webアプリのスクリプト上でnavigator.serviceWorker.readyがいつまで経ってもresolveできなくなってしまいます。
おそらくいままで常に同じ階層に置いていたらからハマらなかっただけなのだろうか。