{"_id":"@benzinga/safe-await","_rev":"10-c928e8bf2de65433fbddbdddb8ef40f4","name":"@benzinga/safe-await","dist-tags":{"latest":"1.0.6"},"versions":{"0.1.0":{"name":"@benzinga/safe-await","version":"0.1.0","author":{"name":"Zaid","email":"Zaid@benzinga.com"},"license":"UNLICENSED","_id":"@benzinga/safe-await@0.1.0","maintainers":[{"name":"dirtabulous","email":"bert.david.iii@gmail.com"},{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},{"name":"bzdarwin","email":"darwin@benzinga.com"}],"dist":{"shasum":"ad338431026f09a0f90fb40093b4d9a1e45eef86","tarball":"https://registry.npmjs.org/@benzinga/safe-await/-/safe-await-0.1.0.tgz","fileCount":40,"integrity":"sha512-mwZrmkl7dqR/t7s05ugIL8/Xqj7v3Ivni1hlwywGge/vbLiQXhiiqK66LtxVuRt0L8u/IodCZpWmUJMpHYVIbA==","signatures":[{"sig":"MEQCIEr7mxvqbYcnWhevvpvEtM3T6LhFIXgDWwBQ+Jb4xvZRAiAUzBOJtDFmeFxsGHq25zf6RmO1OaDT80rdgP7dbodXoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":223078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5Y+xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqL+Q/9Fl5ZYCVeIElwMfkGJFkvfznV15FbIIRzEsxVfwnE7HNCBRVu\r\nfNhmm5p4MZBQVmD7sA0Dk9RCV9tf8bIO8jmeMxHWWQWVVy5RVVzmN9r/4OnR\r\nBdWLp8kxAH6Z/IFziA1rPeIXYuFeROj2J1SV6+2Ai7lZ50iTZDOxUGqi9cPZ\r\ns5sBpoTSeDw0ZYP4aAPqEVp1TbNeodu6NjbceO2gvaasx/ujvr4fM0UXugBP\r\n+vZJGBLoCglowbaXy2Oj7hLAgHjKBvGq4/O+GLGvrmaANjhAgaGQqs0it0Ly\r\n5nro4dJ/3/fIkhRZ1rQjnFwPge1jV0ADQqVibRDTwXObU9yhWMfajgOU1tg2\r\nv1bJH1Z93moHsZwnH3hvjQ4+pp2Fw7Mhb2BJLSMVlPZ53t89gH1fhvj8USY4\r\nTsEx+zgM/6Nxw380IBcj+SrkUNyFTlEjOrPVduBJebnK3tUPPtEnv4ovbwZK\r\n6dZQiXwGPiaimoPG6IjjaR8nsWUkGQu862vm7sXOvgktffXm8Lty8iNZgeU0\r\n5TFtnRwm44KR763O/G3k3Bbi1khqgnlhq3C7gPsYhwSn2eL4je+i2rwxhcXI\r\np+edaXjUPMnvDD0M3tVPN9ducwybUOCVPEhS6DN0ePHNF13DZ5/3mQwVuqwQ\r\nyZjn5uuLOjeMTAJRjfzR0LlnQEX4WBBxfIk=\r\n=eEP7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./utils-safe-await.umd.js","module":"./utils-safe-await.esm.js","gitHead":"9fd8643dcccab36a9d76b31e96c4f1dd2eb94d56","private":false,"typings":"./index.d.ts","_npmUser":{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},"repository":{"url":"git@gitlab.benzinga.io:benzinga/fusion.git","type":"git"},"_npmVersion":"8.19.3","description":"An implementation of safe-await","directories":{},"sideEffects":false,"_nodeVersion":"16.19.0","publishConfig":{"registry":"https://gitlab.benzinga.io/api/v4/projects/${CI_PROJECT_ID}/packages/npm/"},"_hasShrinkwrap":false,"peerDependencies":{"cross-fetch":"^3.1.5"},"_npmOperationalInternal":{"tmp":"tmp/safe-await_0.1.0_1675988912684_0.43871170916960045","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@benzinga/safe-await","version":"1.0.0","author":{"url":"https://github.com/ZNackasha","name":"Zaid Nackasha","email":"znackasha@gmail.com"},"license":"MIT","_id":"@benzinga/safe-await@1.0.0","maintainers":[{"name":"znackasha","email":"znackasha@gmail.com"},{"name":"dirtabulous","email":"bert.david.iii@gmail.com"},{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},{"name":"bzdarwin","email":"darwin@benzinga.com"}],"homepage":"https://github.com/Benzinga/js-tools","dist":{"shasum":"8b18696d2788feb481c3bfa96b2582c4db5029b4","tarball":"https://registry.npmjs.org/@benzinga/safe-await/-/safe-await-1.0.0.tgz","fileCount":26,"integrity":"sha512-tspN5Ufot/acOyUUkfkLWriLMfW1AoLkvBQ9qVME4KiKzZTRJkzNv47qxDbZEKHmn6BowITOHgHqkR9D+bJfLA==","signatures":[{"sig":"MEUCIQD506PMfLKjlEmgrkApHCkpsDFQRK3qW8LhMj2mhIcgyAIgE/Fk6fckgfpb/iEeFLm3gqxAbLpixpg4UtI8BGvR/r8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":71497},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"f58b8832bc2c112d644d416c4c8120e4b1fac136","private":false,"typings":"./src/index.d.ts","_npmUser":{"name":"znackasha","email":"znackasha@gmail.com"},"_npmVersion":"9.8.1","description":"This Project is Made Possible thanks to","directories":{},"_nodeVersion":"18.18.0","dependencies":{"@swc/helpers":"~0.5.11"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-await_1.0.0_1728058355787_0.23917084984126058","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@benzinga/safe-await","version":"1.0.1","author":{"url":"https://github.com/ZNackasha","name":"Zaid Nackasha","email":"znackasha@gmail.com"},"license":"MIT","_id":"@benzinga/safe-await@1.0.1","maintainers":[{"name":"znackasha","email":"znackasha@gmail.com"},{"name":"dirtabulous","email":"bert.david.iii@gmail.com"},{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},{"name":"bzdarwin","email":"darwin@benzinga.com"}],"homepage":"https://github.com/Benzinga/js-tools","dist":{"shasum":"54ff07e5aeeba32cbf929ac8216df0f9fa48d551","tarball":"https://registry.npmjs.org/@benzinga/safe-await/-/safe-await-1.0.1.tgz","fileCount":26,"integrity":"sha512-5v5sfqJP6D84J9d3F+5xalTJu3/wNKUpZC1UUHO19FbZ+JVYw5CoVzqbcvjOrrbK5OrjyOvu+3SUIILsuOJDqA==","signatures":[{"sig":"MEYCIQDMgok9gm6SZUoopllvOf0amTO4G7MQA94vpnhw6ccVGgIhAPwqtYIOmF2dat+LxTQimZf2duQPv4/syzRsdXFKq9ym","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":71581},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"eb15ec3d3d672d5fb95ac442de9c38246207b8fd","private":false,"typings":"./src/index.d.ts","_npmUser":{"name":"znackasha","email":"znackasha@gmail.com"},"_npmVersion":"9.8.1","description":"This Project is Made Possible thanks to","directories":{},"_nodeVersion":"18.18.0","dependencies":{"@swc/helpers":"~0.5.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-await_1.0.1_1730121621336_0.007152639965807506","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@benzinga/safe-await","version":"1.0.2","author":{"url":"https://github.com/ZNackasha","name":"Zaid Nackasha","email":"znackasha@gmail.com"},"license":"MIT","_id":"@benzinga/safe-await@1.0.2","maintainers":[{"name":"znackasha","email":"znackasha@gmail.com"},{"name":"dirtabulous","email":"bert.david.iii@gmail.com"},{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},{"name":"bzdarwin","email":"darwin@benzinga.com"}],"homepage":"https://github.com/Benzinga/js-tools","dist":{"shasum":"cd69fcbb1be8cc19127a1814e359f8b016277434","tarball":"https://registry.npmjs.org/@benzinga/safe-await/-/safe-await-1.0.2.tgz","fileCount":26,"integrity":"sha512-RHO/YMfLMZAhS2HJenMThJxVLutGnHmfk+V/lZU/k/tUV25xS1P/vuNcb+4PXr+Ta6kPcm0CQKDMzaIW6aRK3g==","signatures":[{"sig":"MEYCIQDNTzwJ/vLpKCvKQFs3sNUJPtlCkDy9UH7fAZGmXT2luAIhAJmvxVwh4RNzc8vhZCDWiEGBlKoyCWNBDyi0Gsc1Bfjl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":72096},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","gitHead":"256b02c8645420e46700672433cacff30509db70","private":false,"typings":"./src/index.d.ts","_npmUser":{"name":"znackasha","email":"znackasha@gmail.com"},"_npmVersion":"9.8.1","description":"This Project is Made Possible thanks to","directories":{},"_nodeVersion":"18.18.0","dependencies":{"@swc/helpers":"~0.5.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-await_1.0.2_1731734951438_0.9868979926440122","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@benzinga/safe-await","version":"1.0.3","author":{"url":"https://github.com/ZNackasha","name":"Zaid Nackasha","email":"znackasha@gmail.com"},"license":"MIT","_id":"@benzinga/safe-await@1.0.3","maintainers":[{"name":"dirtabulous","email":"bert.david.iii@gmail.com"},{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},{"name":"bzdarwin","email":"darwin@benzinga.com"},{"name":"znackasha","email":"znackasha@gmail.com"}],"homepage":"https://github.com/Benzinga/js-tools","dist":{"shasum":"1a08a01203171e2af5d64dc372197461b47d869b","tarball":"https://registry.npmjs.org/@benzinga/safe-await/-/safe-await-1.0.3.tgz","fileCount":26,"integrity":"sha512-wWeyuBEM5HhXgVlHSMrbEnG2E9anqBYzv1KSruBVxBcAMlLtYdTkzwm5bRqvKJkp5n+ZtyhPTUxLFmlE+Z9YbA==","signatures":[{"sig":"MEYCIQClmo4I07RRo/FOKqdnfRH/3j+2BE9bragRgvcRnl6MZAIhAKa5Cjvy6eOh5XdbJgyclsZByR2bhceM4yIK9g/hzvla","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72229},"main":"./src/index.js","type":"module","types":"./src/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"}},"gitHead":"1bd330cf572d8c838de503d3e3258aa51e1c359b","private":false,"typings":"./src/index.d.ts","_npmUser":{"name":"znackasha","email":"znackasha@gmail.com"},"_npmVersion":"9.8.1","description":"This Project is Made Possible thanks to","directories":{},"_nodeVersion":"18.18.0","dependencies":{"@swc/helpers":"~0.5.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-await_1.0.3_1744310004618_0.11894258041560435","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@benzinga/safe-await","version":"1.0.4","author":{"url":"https://github.com/ZNackasha","name":"Zaid Nackasha","email":"znackasha@gmail.com"},"license":"MIT","_id":"@benzinga/safe-await@1.0.4","maintainers":[{"name":"dirtabulous","email":"bert.david.iii@gmail.com"},{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},{"name":"bzdarwin","email":"darwin@benzinga.com"},{"name":"znackasha","email":"znackasha@gmail.com"}],"homepage":"https://github.com/Benzinga/js-tools","dist":{"shasum":"39c4df108d1a13ee18fd23982892cf1d53c415f9","tarball":"https://registry.npmjs.org/@benzinga/safe-await/-/safe-await-1.0.4.tgz","fileCount":26,"integrity":"sha512-FbQeIkuI/Eb4S/ylMyNmFqGfz6jf10Z7ZfW2iCUl15RuBm/iyaVqiNs4lzizuenWu4qG9ijRxO1vw1IQa7Py6A==","signatures":[{"sig":"MEQCIGDUvRLICgyH8QWNRWiThDPLjWfd3VdowfX0n/cm4voVAiAF9XNNASfLTXNkar89UTgfPRjL9U3V63yHmr+MsVAwMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67203},"main":"./src/index.js","type":"module","types":"./src/index.d.ts","module":"./src/index.js","exports":{".":{"types":"./src/index.d.ts","import":"./src/index.js"}},"gitHead":"28c416f3ae3ac03e777fd58bf1166579342647f4","private":false,"typings":"./src/index.d.ts","_npmUser":{"name":"znackasha","email":"znackasha@gmail.com"},"_npmVersion":"9.8.1","description":"This Project is Made Possible thanks to","directories":{},"_nodeVersion":"18.18.0","dependencies":{"@swc/helpers":"~0.5.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-await_1.0.4_1744313032467_0.4105110344981413","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@benzinga/safe-await","version":"1.0.5","author":{"url":"https://github.com/ZNackasha","name":"Zaid Nackasha","email":"znackasha@gmail.com"},"license":"MIT","_id":"@benzinga/safe-await@1.0.5","maintainers":[{"name":"dirtabulous","email":"bert.david.iii@gmail.com"},{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},{"name":"bzdarwin","email":"darwin@benzinga.com"},{"name":"znackasha","email":"znackasha@gmail.com"}],"homepage":"https://github.com/Benzinga/js-tools","dist":{"shasum":"0cc70979e450a63e210ecffc3dcc919ad02f2b6f","tarball":"https://registry.npmjs.org/@benzinga/safe-await/-/safe-await-1.0.5.tgz","fileCount":11,"integrity":"sha512-i1aOKbM6VzBo9sRBFGULuUMVkqq78JsNtX0qhmCKMcZhg07vQs1WEu2Wb2BY8i6luzSsQUiPpamSBOI6i0Pbyw==","signatures":[{"sig":"MEQCIEq5IRanZzlqrn+ZW4Kmb3Bm0DOTE6rtXOBKdvxUxbmQAiBFOj+IJtuYDODtWmfx/0UU67sgPEJQeh6JccafjItp+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18636},"main":"./index.js","type":"module","types":"./index.d.ts","gitHead":"ced809b280eb0597687db060b2dd21c456e83c7a","private":false,"_npmUser":{"name":"znackasha","email":"znackasha@gmail.com"},"_npmVersion":"9.8.1","description":"This Project is Made Possible thanks to","directories":{},"_nodeVersion":"18.18.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-await_1.0.5_1744321313921_0.9211182845648598","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@benzinga/safe-await","version":"1.0.6","author":{"url":"https://github.com/ZNackasha","name":"Zaid Nackasha","email":"znackasha@gmail.com"},"license":"MIT","_id":"@benzinga/safe-await@1.0.6","maintainers":[{"name":"dirtabulous","email":"bert.david.iii@gmail.com"},{"name":"hemrajsinh","email":"hemrajsinh@benzinga.com"},{"name":"bzdarwin","email":"darwin@benzinga.com"},{"name":"znackasha","email":"znackasha@gmail.com"}],"homepage":"https://github.com/Benzinga/js-tools","dist":{"shasum":"8a90f3c74b089a4cf9a18e11a3b7def4bb7252d2","tarball":"https://registry.npmjs.org/@benzinga/safe-await/-/safe-await-1.0.6.tgz","fileCount":11,"integrity":"sha512-U/VX/y8rVH2ef9yTlGjgFK1i6h37AM55z3jhe4k2F72z6Z7AzVGJgFBewjoEreTxzlgv5q185pi8GhYA1r12pQ==","signatures":[{"sig":"MEUCIQDikzn5cUpwdDNsJwBl5qsjQgCmrf6NM6uPYnok3s024wIgDUuU1x3oRDR280RI7Vc/rPl85+8nAooVGb6RCS/mz3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18636},"main":"./index.js","type":"module","types":"./index.d.ts","gitHead":"ced809b280eb0597687db060b2dd21c456e83c7a","private":false,"_npmUser":{"name":"znackasha","email":"znackasha@gmail.com"},"_npmVersion":"9.8.1","description":"This Project is Made Possible thanks to","directories":{},"_nodeVersion":"18.18.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-await_1.0.6_1744350569070_0.04758626841354441","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2023-02-10T00:28:32.602Z","modified":"2025-04-28T17:56:47.804Z","0.1.0":"2023-02-10T00:28:33.049Z","1.0.0":"2024-10-04T16:12:35.988Z","1.0.1":"2024-10-28T13:20:21.553Z","1.0.2":"2024-11-16T05:29:11.648Z","1.0.3":"2025-04-10T18:33:24.804Z","1.0.4":"2025-04-10T19:23:52.684Z","1.0.5":"2025-04-10T21:41:54.109Z","1.0.6":"2025-04-11T05:49:29.251Z"},"author":{"url":"https://github.com/ZNackasha","name":"Zaid Nackasha","email":"znackasha@gmail.com"},"license":"MIT","homepage":"https://github.com/Benzinga/js-tools","description":"This Project is Made Possible thanks to","maintainers":[{"email":"bert.david.iii@gmail.com","name":"dirtabulous"},{"email":"hemrajsinh@benzinga.com","name":"hemrajsinh"},{"email":"darwin@benzinga.com","name":"bzdarwin"},{"email":"znackasha@gmail.com","name":"znackasha"},{"email":"krish@benzinga.com","name":"krishkashiwala"}],"readme":"# safe-await\r\n\r\nThis Project is Made Possible thanks to\r\n\r\n[![Benzinga Logo](https://import.cdn.thinkific.com/222214/D3r5EJy9SZaNsaY7dQsj_Benzinga-logo-navy.svg)](www.benzinga.com)\r\n\r\n[![ZSoft Logo](https://raw.githubusercontent.com/ZNackasha/CDN/refs/heads/main/zsoft-no-size.svg)](https://github.com/znackasha)\r\n\r\nSafe Await is a simple way to make sure that our errors are handled.\r\n\r\n## SafePromise\r\n\r\nOne of the things I don't like about JavaScript async/await syntax is that it throws on error. This has always caused issues for me since people always forget to try catch these await statements. The other issue I have is the new scope that is created when you try catch which simply makes the code look awful because you have to start thinking about scope of variables.\r\n\r\n### safeAwait\r\n\r\nWe don't have to create a safe function we can simply transform the function call to a safe call such as:\r\n\r\n```ts\r\nconst stuff = await safeAwait(fetch('benzinga.com/things/and/stuff'));\r\nif (stuff.err) {\r\n  console.log(stuff.err);\r\n}\r\nelse {\r\n  console.log(stuff.ok);\r\n}\r\n```\r\n\r\nAs you can see all we are doing here is wrapping fetch with the `safeAwait` function which does the following:\r\n\r\n```ts\r\nexport type SafePromise<T> = Promise<{ err: Error; ok: undefined } | { err: undefined; ok: T}>\r\n\r\nexport const safeAwait = async <T>(promise: Promise<T>): SafePromise<T> => {\r\n  try {\r\n    return { ok: await promise };\r\n  } catch (err: any) {\r\n    return { err };\r\n  }\r\n};\r\n```\r\n\r\nOne thing to note about both is that `safeAwait` returns a SafePromise. This is used to indicate that you do not have to try catch the Promise and its an indication that this was checked somewhere upstream. Because the only time you really need to try catch is when calling API functions. After that point Promises are safe unless you are throwing exceptions yourself.\r\n\r\n### safeAwaitFunction\r\n\r\nAnother way to solve this issue is to wrap the function to make a `safeFunction`. So what does `safeFunction` do? well its very simply it takes a function as an argument and returns a function. Internally it is simply doing the try catch for you and tupalizing the result.\r\n\r\n```ts\r\nconst stuff = await safeFetch('benzinga.com/things/and/stuff');\r\nif (stuff.err) {\r\n  console.log(stuff.err);\r\n} else {\r\n  console.log(stuff.ok);\r\n}\r\n```\r\n\r\nCreating a safe function is easy. Simply call `safeAwaitFunction` with an async function as a parameter.\r\n\r\n```ts\r\nconst safeFetch = safeAwaitFunction(fetch);\r\n```\r\n\r\nNow we have an implantation of `fetch` that always returns a `SafePromise`.\r\n\r\nThis is the core concept of the `safe-await` package. The following are simply helper functions and tools that simply use the `safe-await` library.\r\n\r\n## Helper Functions\r\n\r\n### safeRace\r\n\r\nSimilar to `Promise.Race` but for safePromises.\r\n\r\n```ts\r\nsafeRace = <T>(promises: SafePromise<T>[]): SafePromise<T>\r\n```\r\n\r\n### safeMap\r\n\r\nA function that is similar to 'map' for arrays but for safe awaits\r\n\r\nexample\r\n\r\n```ts\r\nconst quotesExist = (symbol) => {\r\n  safeMap(fetchQuote(symbol), quote => quote.doesExist)\r\n};\r\n```\r\n\r\n### safeThen\r\n\r\nA function that is similar to `Promise.then` which allows you to add a function to run after the completion of the promise.\r\n\r\nexample\r\n\r\n```ts\r\nconst quotesExist = (symbol) => {\r\n  safeThen(fetchQuote(symbol), quote => { ok: quote.doesExist })\r\n};\r\n```\r\n\r\n### safeAwaitAll\r\n\r\nSimilar to `Promise.all` however it returns a `SafePromiseMultiError` which allows:\r\n\r\n```ts\r\nsafeAwaitAll = async <U, T extends readonly SafePromise<U>[]>(promise: T & SafePromise<U>[]): SafePromiseMultiError<U[]>\r\n```\r\n","readmeFilename":"README.md"}