Inside the callback for `addListener` is a new tick of JavaScript. We sometimes call this the "base of asynchronicity", the first JavaScript that runs when a new frame of JavaScript begins. In Ember, you should always wrap the base of asynchronicity in a runloop so deferred actions queues can have the opportunity to run. Code might work without using Ember.run, but it is reliant on a mechanism call "auto-runs" which will run your deferred functions non-deterministically.

`Ember.run(null, listener, matcher);` is just:

``` JavaScript
Ember.run(null /* the context */, function(){
  listener(matcher);
});
```