In the beginning, the web platform used links and buttons differently: links were used to send you to another location, and buttons were used to perform an action at your current location.
As web apps have advanced, those definitions have blurred: links are more often used for actions, and buttons are more often used for navigation. Apps do not always make it clear which is which.
As a result of this added complexity, users who expect typical link/button behavior can easily make mistakes. If a button changes the page without warning, a user might lose their work in another part of the page. Similarly, a might click a link to find out more about an action, and be surprised when the action occurs before they’re ready.
Advanced users will usually be prepared for links and buttons to behave unpredictably. In most cases, the user learns to look for other indicators, like captions that say “Go here” or “Do this”. Unfortunately, when using a simple app with typical link/button behavior, these advanced users find themselves moving slower. They tend to be more cautious: thinking about for nuances in the caption, or hovering longer to see if a tool tip appears.
A simple solution to this problem would be a new cursor convention. Imagine two new cursors: one that unambigiously means navigation and one that unambiguously means action. Current browser technology should make it trivial: they could analyze the behavior behind a link or button and show the correct cursor, regardless of formatting or caption text. With current graphics cards and screen resolutions, most users would easily be able to distinguish between two additional cursors.