Function promisify

  • Takes a function following the common error-first callback style, i.e. taking an (err, value) => ... callback as the last argument, and returns a version that returns promises.

    const util = require('util');
    const fs = require('fs');

    const stat = util.promisify(fs.stat);
    stat('.').then((stats) => {
    // Do something with `stats`
    }).catch((error) => {
    // Handle the error.
    });

    Or, equivalently using async functions:

    const util = require('util');
    const fs = require('fs');

    const stat = util.promisify(fs.stat);

    async function callStat() {
    const stats = await stat('.');
    console.log(`This directory is owned by ${stats.uid}`);
    }

    If there is an original[util.promisify.custom] property present, promisifywill return its value, see Custom promisified functions.

    promisify() assumes that original is a function taking a callback as its final argument in all cases. If original is not a function, promisify()will throw an error. If original is a function but its last argument is not an error-first callback, it will still be passed an error-first callback as its last argument.

    Using promisify() on class methods or other methods that use this may not work as expected unless handled specially:

    const util = require('util');

    class Foo {
    constructor() {
    this.a = 42;
    }

    bar(callback) {
    callback(null, this.a);
    }
    }

    const foo = new Foo();

    const naiveBar = util.promisify(foo.bar);
    // TypeError: Cannot read property 'a' of undefined
    // naiveBar().then(a => console.log(a));

    naiveBar.call(foo).then((a) => console.log(a)); // '42'

    const bindBar = naiveBar.bind(foo);
    bindBar().then((a) => console.log(a)); // '42'

    Type Parameters

    • TCustom extends Function

    Parameters

    Returns TCustom

  • Type Parameters

    • TResult

    Parameters

    • fn: ((callback: ((err: any, result: TResult) => void)) => void)
        • (callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

    Returns (() => Promise<TResult>)

      • (): Promise<TResult>
      • Returns Promise<TResult>

  • Parameters

    • fn: ((callback: ((err?: any) => void)) => void)
        • (callback: ((err?: any) => void)): void
        • Parameters

          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

    Returns (() => Promise<void>)

      • (): Promise<void>
      • Returns Promise<void>

  • Type Parameters

    • T1

    • TResult

    Parameters

    • fn: ((arg1: T1, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

      • (arg1: T1): Promise<TResult>
      • Parameters

        • arg1: T1

        Returns Promise<TResult>

  • Type Parameters

    • T1

    Parameters

    • fn: ((arg1: T1, callback: ((err?: any) => void)) => void)
        • (arg1: T1, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

      • (arg1: T1): Promise<void>
      • Parameters

        • arg1: T1

        Returns Promise<void>

  • Type Parameters

    • T1

    • T2

    • TResult

    Parameters

    • fn: ((arg1: T1, arg2: T2, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, arg2: T2, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

      • (arg1: T1, arg2: T2): Promise<TResult>
      • Parameters

        • arg1: T1
        • arg2: T2

        Returns Promise<TResult>

  • Type Parameters

    • T1

    • T2

    Parameters

    • fn: ((arg1: T1, arg2: T2, callback: ((err?: any) => void)) => void)
        • (arg1: T1, arg2: T2, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

      • (arg1: T1, arg2: T2): Promise<void>
      • Parameters

        • arg1: T1
        • arg2: T2

        Returns Promise<void>

  • Type Parameters

    • T1

    • T2

    • T3

    • TResult

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

      • (arg1: T1, arg2: T2, arg3: T3): Promise<TResult>
      • Parameters

        • arg1: T1
        • arg2: T2
        • arg3: T3

        Returns Promise<TResult>

  • Type Parameters

    • T1

    • T2

    • T3

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, callback: ((err?: any) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

      • (arg1: T1, arg2: T2, arg3: T3): Promise<void>
      • Parameters

        • arg1: T1
        • arg2: T2
        • arg3: T3

        Returns Promise<void>

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • TResult

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • arg4: T4
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

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

        • arg1: T1
        • arg2: T2
        • arg3: T3
        • arg4: T4

        Returns Promise<TResult>

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: ((err?: any) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • arg4: T4
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

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

        • arg1: T1
        • arg2: T2
        • arg3: T3
        • arg4: T4

        Returns Promise<void>

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • TResult

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • arg4: T4
          • arg5: T5
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

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

        • arg1: T1
        • arg2: T2
        • arg3: T3
        • arg4: T4
        • arg5: T5

        Returns Promise<TResult>

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: ((err?: any) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • arg4: T4
          • arg5: T5
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

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

        • arg1: T1
        • arg2: T2
        • arg3: T3
        • arg4: T4
        • arg5: T5

        Returns Promise<void>

  • Parameters

    • fn: Function

    Returns Function

  • Takes a function following the common error-first callback style, i.e. taking an (err, value) => ... callback as the last argument, and returns a version that returns promises.

    const util = require('util');
    const fs = require('fs');

    const stat = util.promisify(fs.stat);
    stat('.').then((stats) => {
    // Do something with `stats`
    }).catch((error) => {
    // Handle the error.
    });

    Or, equivalently using async functions:

    const util = require('util');
    const fs = require('fs');

    const stat = util.promisify(fs.stat);

    async function callStat() {
    const stats = await stat('.');
    console.log(`This directory is owned by ${stats.uid}`);
    }

    If there is an original[util.promisify.custom] property present, promisifywill return its value, see Custom promisified functions.

    promisify() assumes that original is a function taking a callback as its final argument in all cases. If original is not a function, promisify()will throw an error. If original is a function but its last argument is not an error-first callback, it will still be passed an error-first callback as its last argument.

    Using promisify() on class methods or other methods that use this may not work as expected unless handled specially:

    const util = require('util');

    class Foo {
    constructor() {
    this.a = 42;
    }

    bar(callback) {
    callback(null, this.a);
    }
    }

    const foo = new Foo();

    const naiveBar = util.promisify(foo.bar);
    // TypeError: Cannot read property 'a' of undefined
    // naiveBar().then(a => console.log(a));

    naiveBar.call(foo).then((a) => console.log(a)); // '42'

    const bindBar = naiveBar.bind(foo);
    bindBar().then((a) => console.log(a)); // '42'

    Type Parameters

    • TCustom extends Function

    Parameters

    Returns TCustom

  • Type Parameters

    • TResult

    Parameters

    • fn: ((callback: ((err: any, result: TResult) => void)) => void)
        • (callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

    Returns (() => Promise<TResult>)

      • (): Promise<TResult>
      • Returns Promise<TResult>

  • Parameters

    • fn: ((callback: ((err?: any) => void)) => void)
        • (callback: ((err?: any) => void)): void
        • Parameters

          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

    Returns (() => Promise<void>)

      • (): Promise<void>
      • Returns Promise<void>

  • Type Parameters

    • T1

    • TResult

    Parameters

    • fn: ((arg1: T1, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

      • (arg1: T1): Promise<TResult>
      • Parameters

        • arg1: T1

        Returns Promise<TResult>

  • Type Parameters

    • T1

    Parameters

    • fn: ((arg1: T1, callback: ((err?: any) => void)) => void)
        • (arg1: T1, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

      • (arg1: T1): Promise<void>
      • Parameters

        • arg1: T1

        Returns Promise<void>

  • Type Parameters

    • T1

    • T2

    • TResult

    Parameters

    • fn: ((arg1: T1, arg2: T2, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, arg2: T2, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

      • (arg1: T1, arg2: T2): Promise<TResult>
      • Parameters

        • arg1: T1
        • arg2: T2

        Returns Promise<TResult>

  • Type Parameters

    • T1

    • T2

    Parameters

    • fn: ((arg1: T1, arg2: T2, callback: ((err?: any) => void)) => void)
        • (arg1: T1, arg2: T2, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

      • (arg1: T1, arg2: T2): Promise<void>
      • Parameters

        • arg1: T1
        • arg2: T2

        Returns Promise<void>

  • Type Parameters

    • T1

    • T2

    • T3

    • TResult

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

      • (arg1: T1, arg2: T2, arg3: T3): Promise<TResult>
      • Parameters

        • arg1: T1
        • arg2: T2
        • arg3: T3

        Returns Promise<TResult>

  • Type Parameters

    • T1

    • T2

    • T3

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, callback: ((err?: any) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

      • (arg1: T1, arg2: T2, arg3: T3): Promise<void>
      • Parameters

        • arg1: T1
        • arg2: T2
        • arg3: T3

        Returns Promise<void>

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • TResult

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • arg4: T4
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

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

        • arg1: T1
        • arg2: T2
        • arg3: T3
        • arg4: T4

        Returns Promise<TResult>

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: ((err?: any) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • arg4: T4
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

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

        • arg1: T1
        • arg2: T2
        • arg3: T3
        • arg4: T4

        Returns Promise<void>

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    • TResult

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: ((err: any, result: TResult) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: ((err: any, result: TResult) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • arg4: T4
          • arg5: T5
          • callback: ((err: any, result: TResult) => void)
              • (err: any, result: TResult): void
              • Parameters

                • err: any
                • result: TResult

                Returns void

          Returns void

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

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

        • arg1: T1
        • arg2: T2
        • arg3: T3
        • arg4: T4
        • arg5: T5

        Returns Promise<TResult>

  • Type Parameters

    • T1

    • T2

    • T3

    • T4

    • T5

    Parameters

    • fn: ((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: ((err?: any) => void)) => void)
        • (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: ((err?: any) => void)): void
        • Parameters

          • arg1: T1
          • arg2: T2
          • arg3: T3
          • arg4: T4
          • arg5: T5
          • callback: ((err?: any) => void)
              • (err?: any): void
              • Parameters

                • Optional err: any

                Returns void

          Returns void

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

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

        • arg1: T1
        • arg2: T2
        • arg3: T3
        • arg4: T4
        • arg5: T5

        Returns Promise<void>

  • Parameters

    • fn: Function

    Returns Function

Generated using TypeDoc