title: removeEventListener not removed
body: <p>I must be overlooking something as my eventlistener is not removed. I created a small reproduction. I am not using anynomous functions. The signature of the addEventListener is identical to the removeEventListener. Still my listener is still being triggered when I dispatch the event.</p>
  
  <p>Even though the 3rd argument is not default in any modern browser, I still added it for debugging purposes but it didn't make any difference. </p>
  
  <p>Can someone please help me out here. What am I missing?</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>function Foo(){
      this.AddComponent();
  }
  
  Foo.prototype.AddComponent = function(){
      var self = this;
      
      window.addEventListener("OnAdd",self.OnAdd,false);
  
      var ev = new CustomEvent('OnAdd', {
          detail: {}
      });
  
      window.setTimeout(function(){
        console.log('dispatched');
        window.dispatchEvent(ev)
      },1000);
  }
  
  Foo.prototype.OnAdd = function(event){
      console.log('I was fired!');
  
      var self = this;    
      window.removeEventListener("OnAdd",self.OnAdd,false);
  
      // try to fire again, which in theory should not work
      var ev = new CustomEvent('OnAdd', {
          detail: {}
      });
      
      window.dispatchEvent(ev);
  }
  
  new Foo();</code></pre>
  </div>
  </div>
  </p>