Countdown.js — super simple countdowns.
gumroad.github.io
gumroad.github.io
Instead of forcing the user to wait for the end of the countdown, you can use an "undo" button. Instead of actually undoing the operation, they would just be preventing it from happening in the first place.
On the other hand for irreversible actions, as the authors put it (and ones more drastic than those mentioned here), a dialog, modal or otherwise, is perfectly warranted.
One more click hardly makes any difference in time, and it brings up a brief little moment for reconsideration in case the user doesn't immediately realize they're doing something potentially unwanted.