     # state with a timeout.
     if exactMatchCandidates.length > 0
       currentTarget = target
-      while not event.handled and currentTarget? and currentTarget isnt document
+      eventHandled = false
+      while not eventHandled and currentTarget? and currentTarget isnt document
         exactMatches = @findExactMatches(exactMatchCandidates, currentTarget)
         for exactMatchCandidate in exactMatches
           if exactMatchCandidate.command is 'native!'

              binding: exactMatchCandidate,
              keyboardEventTarget: target
            }
            event.handled = true # Kicks it out of the parent loop
            break
        currentTarget = currentTarget.parentElement


    # matching selectors.
    {partialMatchCandidates, keydownExactMatchCandidates, exactMatchCandidates} = @findMatchCandidates(queuedKeystrokes)
    exactMatch = null
    dispatchedBinding = null
    partialMatches = @findPartialMatches(partialMatchCandidates, target)

    # Determine if the current keystrokes match any bindings *exactly*. If we
