       }
     else if hasPartialMatches and shouldUsePartialMatches
       event.preventDefault()
-      @emitter.emit 'did-partially-match-binding', {
+      this.emitter.emit 'did-partially-match-binding', {
         keystrokes,
         eventType: event.type,
         partiallyMatchedBindings: partialMatches,
         keyboardEventTarget: target
       }
     else if not dispatchedExactMatch? and not hasPartialMatches
-      @emitter.emit 'did-fail-to-match-binding', {
+      this.emitter.emit 'did-fail-to-match-binding', {
         keystrokes,
         eventType: event.type,
         keyboardEventTarget: target

    # `terminatePendingState`. An extension of our last example:
    #
    # // Both of these will exit pending state for: 'ctrl-a b c': 'my-sweet-command'
    # @queuedKeystrokes = ['ctrl-a', 'b', 'c'] // User typed `c`. Exact match! Dispatch the command and clear state variables. Easy.
    # @queuedKeystrokes = ['ctrl-a', 'b', 'd'] // User typed `d`. No hope of matching, terminatePendingState(). Dragons.
    #
    # `terminatePendingState` is where things get crazy. Let's pretend the user
    # typed 3 total keystrokes: `ctrl-a`, `b`, then `d`. There are no exact

  #
  # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
  onDidFailToMatchBinding: (callback) ->
    this.emitter.on 'did-fail-to-match-binding', callback

  # Invoke the given callback when a keymap file is reloaded.
  #
