On 10/30/2019 10:19 PM, Jan-Ivar Bruaroey wrote:
This always seemed trivial to me to do with: Promise.all(promises.map(p => p.catch(e => e)))
As Boris pointed out, this does not have proper exception handling. If exceptions should be ignored, it may be good to call "console.error". In case exceptions should be fatal, like in most automated test files in mozilla-central, something like the following would be better instead: .catch(ex => ok(false, ex)) But unless you have an array to begin with, in test files it's generally better to "await" on each promise. There is a danger with allSettled: // Better await promise1; await promise2; // Also valid await Promise.all([promise1, promise2]); // INCORRECT //await Promise.allSettled([promise1, promise2]); The last example silently loses any rejection state. My recommendation to avoid this pitfall would be to add an ESLint rule. However, I don't know how sophisticated they could be, and just checking that the caller does something with the return value may not be enough, if passing it to "await" or calling ".then" is enough to silence the warning. Maybe just disallow allSettled in tests unless overridden? Cheers, Paolo _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform