Skip to content

chpio/babel-plugin-transform-async-to-bluebird

Repository files navigation

babel-plugin-transform-async-to-bluebird

This plugin transforms async to bluebird.

Examples

An async function containing no await gets wrapped by bluebirds method function without using the generator, resulting in less overhead. All returned or thrown values are wrapped by Promises and then returned.

async function myFunction(input) {
	if (input === 0) throw new TypeError('Invalid input');
	if (input === 42) return promiseReturningFunction(input);
	return input + 10;
}

myFunction(0); // Returns a Promise, rejecting into an TypeError('Invalid input')
myFunction(42); // Returns a Promise
myFunction($other_value); // Returns a Promise, resolving into $other_value + 10

On the other side an async + await function gets wrapped by bluebirds coroutine; it's using the generator.

async function myFunction(input) {
	if (input === 0) throw new TypeError('Invalid input');
	const res = await promiseReturningFunction(input);
	return res + 10;
}

Usage

  1. Install bluebird: npm install --save bluebird
  2. Install the plugin: npm install --save-dev babel-plugin-transform-async-to-bluebird
  3. Add transform-async-to-bluebird to your .babelrc file:
{
	"plugins": ["transform-async-to-bluebird"]
}

Credits

This babel plugin is based on babel-helper-remap-async-to-generator

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published