Undici exposes a variety of error objects that you can use to enhance your error handling.
You can find all the error objects inside the errors
key.
import { errors } from 'undici'
Error | Error Codes | Description |
---|---|---|
UndiciError |
UND_ERR |
all errors below are extended from UndiciError . |
ConnectTimeoutError |
UND_ERR_CONNECT_TIMEOUT |
socket is destroyed due to connect timeout. |
HeadersTimeoutError |
UND_ERR_HEADERS_TIMEOUT |
socket is destroyed due to headers timeout. |
HeadersOverflowError |
UND_ERR_HEADERS_OVERFLOW |
socket is destroyed due to headers' max size being exceeded. |
BodyTimeoutError |
UND_ERR_BODY_TIMEOUT |
socket is destroyed due to body timeout. |
ResponseStatusCodeError |
UND_ERR_RESPONSE_STATUS_CODE |
an error is thrown when throwOnError is true for status codes >= 400. |
InvalidArgumentError |
UND_ERR_INVALID_ARG |
passed an invalid argument. |
InvalidReturnValueError |
UND_ERR_INVALID_RETURN_VALUE |
returned an invalid value. |
RequestAbortedError |
UND_ERR_ABORTED |
the request has been aborted by the user |
ClientDestroyedError |
UND_ERR_DESTROYED |
trying to use a destroyed client. |
ClientClosedError |
UND_ERR_CLOSED |
trying to use a closed client. |
SocketError |
UND_ERR_SOCKET |
there is an error with the socket. |
NotSupportedError |
UND_ERR_NOT_SUPPORTED |
encountered unsupported functionality. |
RequestContentLengthMismatchError |
UND_ERR_REQ_CONTENT_LENGTH_MISMATCH |
request body does not match content-length header |
ResponseContentLengthMismatchError |
UND_ERR_RES_CONTENT_LENGTH_MISMATCH |
response body does not match content-length header |
InformationalError |
UND_ERR_INFO |
expected error with reason |
ResponseExceededMaxSizeError |
UND_ERR_RES_EXCEEDED_MAX_SIZE |
response body exceed the max size allowed |
SecureProxyConnectionError |
UND_ERR_PRX_TLS |
tls connection to a proxy failed |
Be aware of the possible difference between the global dispatcher version and the actual undici version you might be using. We recommend to avoid the check instanceof errors.UndiciError
and seek for the error.code === '<error_code>'
instead to avoid inconsistencies.
The SocketError
has a .socket
property which holds socket metadata:
interface SocketInfo {
localAddress?: string
localPort?: number
remoteAddress?: string
remotePort?: number
remoteFamily?: string
timeout?: number
bytesWritten?: number
bytesRead?: number
}
Be aware that in some cases the .socket
property can be null
.