Это деталь имплементации, не надо объяснять это новичкам, а то наш Рамблер и так сильно запутался
Лучше как раз объяснять через токены. Тогда нетривиальность функции объяснить очень просто: при каждом вызове рантайм передаёт ей новый токен (да, на самом деле такого не происходит, но как ментальная модель сойдёт)