Not exactly poll. Use scroll events to start your polling; after the second time your loop function doesn't find a change in the scrollTop, stop requesting frames.
Even without this guard, with just the `old !== getScrollTop()` it doesn't eat so much CPU neither.
Wouldn't your way consume a lot of unnecessary CPU?