почему функция в setTimeout выполняется дважды?
Функция, вызываемая в setTimeout, срабатывает с нужными промежутками, но каждый раз выполняется дважды. При этом правильно обновляет счетчик, каждый раз увеличивая его на единицу. Почему дважды?
Примечание: inform - самописная функция, отправляющая сообщения разными каналами.
async function serviceOAuth() {
const { expiresAt } = await getOAuth();
const delay = expiresAt - Date.now() - 1000;
inform(`Обновим oAuth ${new Date(expiresAt)}`, 'info');
let counter = 0;
let timeId = setTimeout(async function renewToken() {
const { expires_in: expiresIn } = await getOAuth();
const timer = expiresIn * 1000;
counter += 1;
inform(`Обновление oAuth #${counter}`, 'info');
inform(`Следующее обновление ${new Date(Date.now() + timer)}`, 'info');
clearTimeout(timeId);
timeId = setTimeout(renewToken, timer);
}, delay);
}