JSPM

promise-all-reject-late

1.0.1
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 2836707
    • Score
      100M100P100Q224131F
    • License ISC

    Like Promise.all, but save rejections until all promises are resolved

    Package Exports

    • promise-all-reject-late

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (promise-all-reject-late) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    promise-all-reject-late

    Like Promise.all, but save rejections until all promises are resolved.

    This is handy when you want to do a bunch of things in parallel, and rollback on failure, without clobbering or conflicting with those parallel actions that may be in flight. For example, creating a bunch of files, and deleting any if they don't all succeed.

    Example:

    const lateReject = require('promise-all-reject-late')
    
    const { promisify } = require('util')
    const fs = require('fs')
    const writeFile = promisify(fs.writeFile)
    
    const createFilesOrRollback = (files) => {
      return lateReject(files.map(file => writeFile(file, 'some data')))
        .catch(er => {
          // try to clean up, then fail with the initial error
          // we know that all write attempts are finished at this point
          return lateReject(files.map(file => rimraf(file)))
            .catch(er => {
              console.error('failed to clean up, youre on your own i guess', er)
            })
            .then(() => {
              // fail with the original error
              throw er
            })
        })
    }

    API

    • lateReject([array, of, promises]) - Resolve all the promises, returning a promise that rejects with the first error, or resolves with the array of results, but only after all promises are settled.