DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/mz package

    2.7.0 • Public • Published

    MZ - Modernize node.js

    NPM version Build status Test coverage Dependency Status License Downloads

    Modernize node.js to current ECMAScript specifications! node.js will not update their API to ES6+ for a while. This library is a wrapper for various aspects of node.js' API.

    Installation and Usage

    Set mz as a dependency and install it.

    npm i mz

    Then prefix the relevant require()s with mz/:

    var fs = require('mz/fs')
    fs.exists(__filename).then(function (exists) {
      if (exists) // do something

    With ES2017, this will allow you to use async functions cleanly with node's core API:

    const fs = require('mz/fs')
    async function doSomething () {
      if (await fs.exists(__filename)) // do something


    Many node methods are converted into promises. Any properties that are deprecated or aren't asynchronous will simply be proxied. The modules wrapped are:

    • child_process
    • crypto
    • dns
    • fs (uses graceful-fs if available)
    • readline
    • zlib
    var exec = require('mz/child_process').exec
    exec('node --version').then(function (stdout) {

    Promise Engine

    mz uses any-promise.


    Can I use this in production?

    Yes, Node 4.x ships with stable promises support. For older engines, you should probably install your own promise implementation and register it with require('any-promise/register')('bluebird').

    Will this make my app faster?

    Nope, probably slower actually.

    Can I add more features?

    Sure. Open an issue.

    Currently, the plans are to eventually support:

    • New APIs in node.js that are not available in older versions of node
    • ECMAScript7 Streams


    npm i mz

    DownloadsWeekly Downloads






    Last publish


    • evancarroll
    • coderhaoxin
    • rstacruz
    • linusu
    • dead_horse
    • dead-horse
    • jongleberry
    • swatinem