---
title: "Promisified Node Builtins"
description: "Node.js has several built-in modules that are already promisified for you. Practical notes and code examples on Promisified."
url: "https://h3manth.com/scribe/promisified-node-built-ins/"
canonical_url: "https://h3manth.com/scribe/promisified-node-built-ins/"
markdown_url: "https://h3manth.com/scribe/blog/promisified-node-built-ins.md"
publishDate: "2021-04-26T00:00:00.000Z"
author: "Hemanth HM"
category: "node"
tags: ["node","javascript","promises"]
word_count: 234
reading_time_minutes: 2
x_markdown_tokens: 677
content_signal: "ai-train=yes, search=yes, ai-input=yes"
---

# Promisified Node Builtins

> Node.js has several built-in modules that are already promisified for you. Practical notes and code examples on Promisified.

At any point in time if you were to promisify a function you can use `util.promisify`, for example:

```javascript
import util from "util";
import fs from "fs";

const readFile = util.promisify(fs.readFile);
```

```javascript
readFile("/tmp/foo.txt", "utf-8")
  .then((buffer) => {
    // we have the content
  })
  .catch((error) => {
    // Handle the error
  });
```

```javascript
// Maybe
(async () => {
  const content = await readFile("/tmp/foo.txt", "utf-8").catch((err) => {});
})();
```

But interestingly there are few builtins that are already promisified for us:

```javascript
require("module")
  .builtinModules
  .filter((module) => /promises/.test(module));
// -> [ 'dns/promises', 'fs/promises', 'stream/promises', 'timers/promises' ]
```

## Built-in Promisified Modules (Node v16+)

- `dns/promises` → [lib/internal/dns/promises.js](https://github.com/nodejs/node/blob/master/lib/internal/dns/promises.js)
- `fs/promises` → [lib/internal/fs/promises.js](https://github.com/nodejs/node/blob/master/lib/internal/fs/promises.js)
- `stream/promises` → [lib/stream/promises.js](https://github.com/nodejs/node/blob/master/lib/stream/promises.js)
- `timers/promises` → [lib/timers/promises.js](https://github.com/nodejs/node/blob/master/lib/timers/promises.js)

## Sample Usage

### timers/promises

```javascript
import { setTimeout, setImmediate, setInterval } from "timers/promises";

const res = await setTimeout(100, "42");

### dns/promises
javascript
const dnsPromises = require("dns/promises"); // require('dns').promises
const lookup = dnsPromises.lookup;

const lookupResp = await lookup("127.0.1.1");
// lookupResp -> { address: '127.0.1.1', family: 4 }

### stream/promises
javascript
const { pipeline } = require("stream/promises");
const fs = require("fs");

async function convert() {
  await pipeline(
    fs.createReadStream("english.txt"),
    async function* (source) {
      source.setEncoding("utf8");
      for await (const chunk of source) {
        yield translate(chunk, "EN2FR"); // imaginary translate method
      }
    },
    fs.createWriteStream("french.txt")
  );
  console.log("Pipeline ✅.");
}

convert().catch(console.error);

### fs/promises
javascript
const readFile = require("fs/promises").readFile;

(async () => {
  const content = await readFile("/tmp/foo.txt", "utf-8").catch((err) => {});
})();
```
