Thank you @Sahil, I appreciate your time to reply.
Sorry, let me correct myself, what I observe is onComplete gets fire at the last split second when the tween ends (before it reaches yPercent: -100), not after.
transform: translate(0%, -100%) matrix(1, 0, 0, 1, 0, 0);
The tween for each elem will be played when it detects the delta in the mousewheel event. So it's indeed very strange as I did not use any stagger tween.