Проверил, нечего там не накапливается. Слайдер честно ждёт пока я выберу вкладку и только потом меняет слайд. Да и сам подумай как могут накапливаться события, если для генерации следующего события нужно обработать предыдущее. Тобиш если нет обработки то и события не генерируются, а если есть обработка это уже значит что не накапливаются )) говоря уже третьими словами, несколько ожидающих событий от одного setTimeout получить невозможно.
А вот ручное переключение между слайдеми у вас сударь работает как то через попу. Только накопление событий тут не причём.
Решить это можно так.
в случае нажатия, унечтожается старый таймер.
и создаётся новый, вызывающий autoAdvance через 20 секунд к примеру.
то есть мы попросту даём пользователю время рассмотреть тот слайд, на который он сам переключился.
А у вас сейчас получается что пользователь меняет слайд, и следом срабатывает таймер который меняет слайд обратно ))
Ещё один интересный момент, это смена кадра в момент переключения на вкладку.
Это происходит потому что обработчик ждёт возможности быть выполненным, и выполняется при первой возможности.
Это конечно и не баг, и можно оставить так. Но можно изменить модель поведения. К примеру замерять временной интервал между двумя вызовами обработчика, и если интервал окажется больше критического значения, то не вызывать trigger.
Когда пользователь вернется на вкладку он будет видеть три секунды тот слайд, который был на экране в момент когда пользователь уходил. То есть переключение слайда произойдет через три секунды, а не сразу после возвращения.
Однако я сомневаюсь что пользователи вообще заметят этот выпендреж.