`node.delegate(eventName, fn, filterThatMatchesNode)` has been supported since 3.3.0, so you'll need to test against `delegateEl.parentNode`.

Also, `do/while`? Who uses `do/while`, any more? In my entire career, I've used `do/while` maybe 5 times. :)
You're doing a truthy test against `tmpEl` at the start. It seems like you could get away with a plain old `while`.