There are two potential problems here: 1. mouse.scroll returns before the scroll is completed 2. visibility check does not check if the element is actually in the viewport. I've added a helper function to make it easier to scroll to the end of an infinite list.