> A related UI principle is “make everything easy to undo”,
But of course, there are plenty of actions that are fundamentally impossible to undo, such as sending an email.
So either you make those actions triggered on mouse-down, which means they're easy to do by accident, or you make them inconsistent with the rest of your UI.
> there are plenty of actions that are fundamentally impossible to undo, such as sending an email.
That's just a lack of imagination. Gmail and others allow undoing a misclicked send no problem. In cases it doesn't matter to the user if the action in practice doesn't happen exactly immediately, delaying it a bit while instantly providing feedback in the UI gets you the best of both worlds.
That works for email, but less-so in Slack or IM in general.
I did once play with a hacked-on delay-send setting, but any delay must be long enough to allow you to register making a mistake first, e.g. 3 seconds) but when it's that long it ruins spontaneity and the rapid back-and-forth experience when chatting away - in that situation I definitely prefer send-on-button-up, not send-on-button-down.