callbackify - Node documentation
function callbackify

Usage in Deno

import { callbackify } from "node:util";
callbackify(fn: () => Promise<void>): (callback: (err: ErrnoException) => void) => void

Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promiseresolved), and the second argument will be the resolved value.

const util = require('node:util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

Will print:

hello world

The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.

Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field namedreason.

function fn() {
  return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  // When the Promise was rejected with `null` it is wrapped with an Error and
  // the original value is stored in `reason`.
  err &#x26;&#x26; Object.hasOwn(err, 'reason') &#x26;&#x26; err.reason === null;  // true
});

Parameters

fn: () => Promise<void>

An async function

Return Type

(callback: (err: ErrnoException) => void) => void

a callback style function

callbackify<TResult>(fn: () => Promise<TResult>): (callback: (
err: ErrnoException,
result: TResult,
) => void
) => void

Type Parameters

TResult

Parameters

fn: () => Promise<TResult>

Return Type

(callback: (
err: ErrnoException,
result: TResult,
) => void
) => void
callbackify<T1>(fn: (arg1: T1) => Promise<void>): (
arg1: T1,
callback: (err: ErrnoException) => void,
) => void

Type Parameters

T1

Parameters

fn: (arg1: T1) => Promise<void>

Return Type

(
arg1: T1,
callback: (err: ErrnoException) => void,
) => void
callbackify<
T1,
TResult,
>
(fn: (arg1: T1) => Promise<TResult>): (
arg1: T1,
callback: (
err: ErrnoException,
result: TResult,
) => void
,
) => void

Type Parameters

T1
TResult

Parameters

fn: (arg1: T1) => Promise<TResult>

Return Type

(
arg1: T1,
callback: (
err: ErrnoException,
result: TResult,
) => void
,
) => void
callbackify<
T1,
T2,
>
(fn: (
arg1: T1,
arg2: T2,
) => Promise<void>
): (
arg1: T1,
arg2: T2,
callback: (err: ErrnoException) => void,
) => void

Type Parameters

T1
T2

Parameters

fn: (
arg1: T1,
arg2: T2,
) => Promise<void>

Return Type

(
arg1: T1,
arg2: T2,
callback: (err: ErrnoException) => void,
) => void
callbackify<
T1,
T2,
TResult,
>
(fn: (
arg1: T1,
arg2: T2,
) => Promise<TResult>
): (
arg1: T1,
arg2: T2,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void

Type Parameters

T1
T2
TResult

Parameters

fn: (
arg1: T1,
arg2: T2,
) => Promise<TResult>

Return Type

(
arg1: T1,
arg2: T2,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void
callbackify<
T1,
T2,
T3,
>
(fn: (
arg1: T1,
arg2: T2,
arg3: T3,
) => Promise<void>
): (
arg1: T1,
arg2: T2,
arg3: T3,
callback: (err: ErrnoException) => void,
) => void

Type Parameters

T1
T2
T3

Parameters

fn: (
arg1: T1,
arg2: T2,
arg3: T3,
) => Promise<void>

Return Type

(
arg1: T1,
arg2: T2,
arg3: T3,
callback: (err: ErrnoException) => void,
) => void
callbackify<
T1,
T2,
T3,
TResult,
>
(fn: (
arg1: T1,
arg2: T2,
arg3: T3,
) => Promise<TResult>
): (
arg1: T1,
arg2: T2,
arg3: T3,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void

Type Parameters

T1
T2
T3
TResult

Parameters

fn: (
arg1: T1,
arg2: T2,
arg3: T3,
) => Promise<TResult>

Return Type

(
arg1: T1,
arg2: T2,
arg3: T3,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void
callbackify<
T1,
T2,
T3,
T4,
>
(fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
) => Promise<void>
): (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
callback: (err: ErrnoException) => void,
) => void

Type Parameters

T1
T2
T3
T4

Parameters

fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
) => Promise<void>

Return Type

(
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
callback: (err: ErrnoException) => void,
) => void
callbackify<
T1,
T2,
T3,
T4,
TResult,
>
(fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
) => Promise<TResult>
): (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void

Type Parameters

T1
T2
T3
T4
TResult

Parameters

fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
) => Promise<TResult>

Return Type

(
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void
callbackify<
T1,
T2,
T3,
T4,
T5,
>
(fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
) => Promise<void>
): (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
callback: (err: ErrnoException) => void,
) => void

Type Parameters

T1
T2
T3
T4
T5

Parameters

fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
) => Promise<void>

Return Type

(
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
callback: (err: ErrnoException) => void,
) => void
callbackify<
T1,
T2,
T3,
T4,
T5,
TResult,
>
(fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
) => Promise<TResult>
): (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void

Type Parameters

T1
T2
T3
T4
T5
TResult

Parameters

fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
) => Promise<TResult>

Return Type

(
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void
callbackify<
T1,
T2,
T3,
T4,
T5,
T6,
>
(fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
arg6: T6,
) => Promise<void>
): (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
arg6: T6,
callback: (err: ErrnoException) => void,
) => void

Type Parameters

T1
T2
T3
T4
T5
T6

Parameters

fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
arg6: T6,
) => Promise<void>

Return Type

(
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
arg6: T6,
callback: (err: ErrnoException) => void,
) => void
callbackify<
T1,
T2,
T3,
T4,
T5,
T6,
TResult,
>
(fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
arg6: T6,
) => Promise<TResult>
): (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
arg6: T6,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void

Type Parameters

T1
T2
T3
T4
T5
T6
TResult

Parameters

fn: (
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
arg6: T6,
) => Promise<TResult>

Return Type

(
arg1: T1,
arg2: T2,
arg3: T3,
arg4: T4,
arg5: T5,
arg6: T6,
callback: (
err: ErrnoException | null,
result: TResult,
) => void
,
) => void