• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Errors
2
3Undici exposes a variety of error objects that you can use to enhance your error handling.
4You can find all the error objects inside the `errors` key.
5
6```js
7import { errors } from 'undici'
8```
9
10| Error                                | Error Codes                           | Description                                                               |
11| ------------------------------------ | ------------------------------------- | ------------------------------------------------------------------------- |
12| `UndiciError`                        | `UND_ERR`                             | all errors below are extended from `UndiciError`.                         |
13| `ConnectTimeoutError`                | `UND_ERR_CONNECT_TIMEOUT`             | socket is destroyed due to connect timeout.                               |
14| `HeadersTimeoutError`                | `UND_ERR_HEADERS_TIMEOUT`             | socket is destroyed due to headers timeout.                               |
15| `HeadersOverflowError`               | `UND_ERR_HEADERS_OVERFLOW`            | socket is destroyed due to headers' max size being exceeded.              |
16| `BodyTimeoutError`                   | `UND_ERR_BODY_TIMEOUT`                | socket is destroyed due to body timeout.                                  |
17| `ResponseStatusCodeError`            | `UND_ERR_RESPONSE_STATUS_CODE`        | an error is thrown when `throwOnError` is `true` for status codes >= 400. |
18| `InvalidArgumentError`               | `UND_ERR_INVALID_ARG`                 | passed an invalid argument.                                               |
19| `InvalidReturnValueError`            | `UND_ERR_INVALID_RETURN_VALUE`        | returned an invalid value.                                                |
20| `RequestAbortedError`                | `UND_ERR_ABORTED`                     | the request has been aborted by the user                                  |
21| `ClientDestroyedError`               | `UND_ERR_DESTROYED`                   | trying to use a destroyed client.                                         |
22| `ClientClosedError`                  | `UND_ERR_CLOSED`                      | trying to use a closed client.                                            |
23| `SocketError`                        | `UND_ERR_SOCKET`                      | there is an error with the socket.                                        |
24| `NotSupportedError`                  | `UND_ERR_NOT_SUPPORTED`               | encountered unsupported functionality.                                    |
25| `RequestContentLengthMismatchError`  | `UND_ERR_REQ_CONTENT_LENGTH_MISMATCH` | request body does not match content-length header                         |
26| `ResponseContentLengthMismatchError` | `UND_ERR_RES_CONTENT_LENGTH_MISMATCH` | response body does not match content-length header                        |
27| `InformationalError`                 | `UND_ERR_INFO`                        | expected error with reason                                                |
28| `ResponseExceededMaxSizeError`       | `UND_ERR_RES_EXCEEDED_MAX_SIZE`       | response body exceed the max size allowed                                 |
29
30### `SocketError`
31
32The `SocketError` has a `.socket` property which holds socket metadata:
33
34```ts
35interface SocketInfo {
36  localAddress?: string
37  localPort?: number
38  remoteAddress?: string
39  remotePort?: number
40  remoteFamily?: string
41  timeout?: number
42  bytesWritten?: number
43  bytesRead?: number
44}
45```
46
47Be aware that in some cases the `.socket` property can be `null`.
48