Under X11, error messages are usually asynchronous, because of the nature of the network connections and the need to batch requests to improve performance.

The server generates error events that are sent to the Display connection and handled, as soon as they arrive, by one of two error handlers, depending on the severity of the error. It is not possible to register callback routines for error handling, because of the fundamentally different way from other events that errors are handled by under X.