Neutered Puppy Masquerade

    TypeScript icon, indicating that this package has built-in type declarations

    5.1.0 • Public • Published


    Version Build Status Coverage Dependencies Vulnerabilities License Types

    A dependable promises and async utility belt.


    npm install promist



    control(test: Function, generator: Function): Function

    Used to control async flow. It returns a promise returning function taking the same arguments as generator.

    • test: a test function (can be async) that will be run before calling each next() on generator, with signature () => Promise<boolean | Error> | boolean | Error. It can return:
      • false: generator will not continue execution (it will never resolve).
      • true: generator will continue execution until the next yield.
      • Error: generator call will return a rejected promise. The same behavior can be expected if the error is thrown instead of returned.
    • generator: must be a generator function. Within it, you'd use yield as you would await for an async function.
    import { control } from 'promist';
    function* gen(n) {
      // You can use yield as you'd use await
      let res = yield Promise.resolve(n * 2);
      // test() will be called here,
      // if it returns falsy or throws an error this next line won't execute
      res = yield Promise.resolve(res * 5);
      return res;
    const willContinue = control(() => true, gen);
    const willNotContinue = control(() => false, gen);
    const willReject = control(() => Error('An error ocurred'), gen);
    willContinue(1).then(console.log); // 10
    willNotContinue(2).then(console.log); // Will not resolve
    willReject(3).then(console.log).catch(console.error); // Error: An error occurred

    isPromise(value: any): boolean

    Returns true if value is a thenable and catchable, false otherwise.

    • value: object to test.
    import { isPromise } from 'promist';
    if (isPromise(promise)) {
      promise.then(() => { /* ... */ }).catch(() => { /* ... */ });

    isPromiseLike(value: any): boolean

    Returns true if value is a thenable, false otherwise.

    • value: object to test.
    import { isPromiseLike } from 'promist';
    if (isPromiseLike(promise)) {
      promise.then(() => { /* ... */ });


    npm i promist

    DownloadsWeekly Downloads






    Unpacked Size

    204 kB

    Total Files


    Last publish


    • rafamel