# node:domain

> How Elide supports Node's deprecated `domain` module: create(), run() and the error event for synchronous and timer errors, and what to use instead.

`node:domain` exports `Domain`, `create()`, `createDomain()`, and `active` from
[Node's deprecated `domain`](https://nodejs.org/api/domain.html). Synchronous and timer errors thrown inside `run()`
go to the domain's `error` event. Use Promise and `EventEmitter` error handling in new code.

## Example

```js
// domain.mjs
import domain from "node:domain";

const d = domain.create();
d.on("error", (error) => console.log("caught:", error.message));
d.run(() => {
  setTimeout(() => {
    throw new Error("timer failed");
  }, 1);
});
```

`elide run domain.mjs` prints:

```text
caught: timer failed
```

<!-- api-reference:start f35764ee1a8b -->
## Reference

**Status:** Full · Not measured

### `domain` exports

`Domain`, `active`, `create`, `createDomain`
<!-- api-reference:end -->
