It seems to me that it would be easier to just call the global pause() function here, just like we do in handleSliderTouchEnd() in video.js.  If you pause here, presumably (though you should check) you won't get the ended event, and won't need to check isSeekedToEnd() when you do get an ended event.  Then you have nice parallel code in the two ways the user can manually seek to the end: in both cases you call pause().

For what its worth, calling a global pause() method from this module does not bother me at all.  If video.js was all encapsulated and you had to do some kind of hack to pause the player, then I might prefer this solution where you just set a flag.  But since it is global, I'd say just call it.

On the other hand, you know more about the new modular structure of this app than I do.  And perhaps you have already tried just calling pause and have found that it doesn't actually work for some reason.