In Node.js, unhandled promise rejections can occur when a promise is rejected but no .catch() handler or try/catch block (for async/await) is provided to handle the rejection. In Node.js v15 and above, unhandled promise rejections are treated as fatal errors and will terminate the process by default. This behavior can be useful for catching errors that may otherwise go unnoticed, but you can also choose to handle them gracefully.