title: Chrome webNavigation with overlapping urlFilters fires multiple times
body: <p>I have two different handlers listening on the <code>onCompleted</code> event. If they coincidentally match/overlap the same url and are both executed, it calls both handlers multiple times. </p>
  
  <p>Example:</p>
  
  <pre class="lang-js prettyprint-override"><code>chrome.webNavigation.onCompleted.addListener(
      () =&gt; {
          console.log('aaa')
          // would run some custom logic here
      },
      { url: [{ urlContains: 'git' }] },
  )
  chrome.webNavigation.onCompleted.addListener(
      () =&gt; {
          console.log('bbb')
          // other custom logic
      },
      { url: [{ urlContains: 'hub' }] },
  )
  </code></pre>
  
  <p>The above logs on navigating to <code>github.com</code>:</p>
  
  <pre><code>aaa
  bbb
  aaa
  bbb
  </code></pre>
  
  <p>I would it expect it to log each statement once. If navigating to a URL that just matches the first listener filter (eg <code>git-tower.com</code>), it logs it only once - so this only seems to happen if both are triggered.</p>
  
  <p>Why is this having an exponential (n^n) effect? </p>