For most operations, "delete" should be reversible, so there are no consequences for clicking delete. If you really get the UI right, you shouldn't need confirmation. (Gmail's message like "this post has been archived <unarchive>" after you archive a message seems about right to me. It implies something like "you did something destructive, and we can cancel it right now. or you can undo it manually later." Much better than confirm/cancel dialogs.)
For things like "yes, I'm afraid of the NSA, wipe those tapes forever", that's another issue. In that case, you want a "flow" rather than a button, I think.
For things like "yes, I'm afraid of the NSA, wipe those tapes forever", that's another issue. In that case, you want a "flow" rather than a button, I think.