await-lock

v1.1.3
Mutex locks for ES2017 async functions and delegating generator functions
async await lock es2017 co yield generator promise

AwaitLock tests codecov

Mutex locks for async functions

npm package

Usage

import AwaitLock from 'await-lock';

let lock = new AwaitLock();

async function runSerialTaskAsync() {
  await lock.acquireAsync();
  try {
    // IMPORTANT: Do not return a promise from here because the finally clause
    // may run before the promise settles, and the catch clause will not run if
    // the promise is rejected
  } finally {
    lock.release();
  }
}

You can also use AwaitLock with co and generator functions.

import AwaitLock from 'await-lock';

let runSerialTaskAsync = co.wrap(function*() {
  yield lock.acquireAsync();
  try {
    // Run async code in the critical section
  } finally {
    lock.release();
  }
});

Metadata

  • MIT
  • Whatever
  • James Ide
  • released 5/31/2018

Downloads

Maintainers