Some work does not need to happen before you answer the user. Sending a notification, recording an event, updating something secondary. The user should get their response now, and that extra work can happen a moment later.
The naive way to do this is to fire the task off and hope it finishes. Kick it off, move on, and trust that it lands. The problem is that once you have sent the response, the work running in the background can get cut off before it completes. It looks fine in testing and drops tasks in production.
Next.js has a proper tool for this now, a way to schedule work to run after the response has been sent, without blocking the user and without the work getting abandoned. You hand it the task, the user gets their fast response, and the follow up work still runs.
The lesson that stuck with me is that fire and forget is not the same as reliable. If something matters, it needs a real place to run, even when that place is after the response. Fast for the user and dependable underneath is the combination I am always after.