title: Service Worker "notificationclick" not firing
body: <p>The notification is showing fine, but when I click on it, or any of the actions, nothing happens. I see no logging, no error messages, but the notification does close (although it closes even when I comment out the <code>event.notification.close()</code>).</p>
  <p>I've tried using the Chrome debugger, and I can set a break point in the code that shows the notification, but all breakpoints within the <code>notificationclick</code> handler fail to pause execution.</p>
  <p>I've spent days trying to get this to work and I'm at my wits' end.</p>
  <pre class="lang-js prettyprint-override"><code>const auth = firebase.auth();
  const functions = firebase.functions();
  const done = functions.httpsCallable(&quot;done&quot;);
  const snooze = functions.httpsCallable(&quot;snooze&quot;);
  
  self.addEventListener(&quot;notificationclick&quot;, event =&gt; {
    console.log(&quot;notificationclick&quot;, event);
    const uid = auth.currentUser.uid;
    const { id, url } = event.notification.data;
  
    event.notification.close();
    event.waitUntil(() =&gt; {
      switch (event.action) {
        case &quot;done&quot;:
          console.log(&quot;Done&quot;);
          return done({ uid, id });
        case &quot;snooze1&quot;:
          console.log(&quot;Snooze 1 Hour&quot;);
          return snooze({ uid, id, hours: 1 });
        case &quot;snooze24&quot;:
          console.log(&quot;Snooze 1 Day&quot;);
          return snooze({ uid, id, hours: 24 });
        default:
          console.log(&quot;Open App&quot;);
          return clients
            .matchAll({
              includeUncontrolled: true,
              type: &quot;window&quot;
            })
            .then(clientList =&gt; {
              for (let i = 0; i &lt; clientList.length; i++) {
                let client = clientList[i];
                if (url[0] === &quot;#&quot;) {
                  if (client.url.endsWith(url) &amp;&amp; &quot;focus&quot; in client) {
                    return client.focus();
                  }
                } else {
                  if (
                    client.url.replace(/#.*$/, &quot;&quot;) === url &amp;&amp;
                    &quot;focus&quot; in client
                  ) {
                    return client.focus();
                  }
                }
              }
              if (clients.openWindow) {
                return clients.openWindow(location.origin + url);
              }
            });
      }
    });
  });
  
  firebase
    .messaging()
    .setBackgroundMessageHandler(({ data: { title, options } }) =&gt; {
      options = JSON.parse(options);
      options.actions = [
        { action: &quot;done&quot;, title: &quot;Done&quot; },
        { action: &quot;snooze1&quot;, title: &quot;Snooze 1 Hour&quot; },
        { action: &quot;snooze24&quot;, title: &quot;Snooze 1 Day&quot; }
      ];
  
      return self.registration.showNotification(title, options);
    });
  </code></pre>