I am currently facing an issue with some Chrome (Chromium) version where the PushManager.subscribe promise from a ServiceWorker stays in a pending state
The problem is with userVisibleOnly: true as a parameter.
This was only introduced in chrome 47. Before that you need to pass it as a manifest parameter.
https://johnme-gcm.appspot.com/manifest.json is a good example to follow.