@b722fd86 basically, in Hare you can pass errors up the call stack, but at some point a frame has to handle them. You can have multiple error handling sites -- a server for instance would probably handle server-level errors differently from client errors, having error handling at the top for server errors (likely fatal) and somewhere in the middle for clients (likely disconnecting the client). Errors are also just values so you can pass them to shared error handling functions for easier use.
@b722fd86 the reason you cannot pass errors up through async function handlers is that each callback is a terminal error site -- if you passed it back up, you'd have to exit the event loop entirely to handle it. So you gotta handle it there. But you can just stick the error in a value and pass it to some shared error handling code that does the meaningful for your use-case