feat(emit-async): pass listener, event and emitter to error handler

This commit is contained in:
Julien Fontanet
2022-05-23 11:31:51 +02:00
parent 7d3546734e
commit b02bf90c8a
4 changed files with 14 additions and 5 deletions

View File

@@ -22,7 +22,7 @@ await ee.emitAsync('start')
// error handling though:
await ee.emitAsync(
{
onError(error) {
onError(error, event, listener) {
console.warn(error)
},
},

View File

@@ -40,7 +40,7 @@ await ee.emitAsync('start')
// error handling though:
await ee.emitAsync(
{
onError(error) {
onError(error, event, listener) {
console.warn(error)
},
},

View File

@@ -1,5 +1,7 @@
'use strict'
const identity = v => v
module.exports = function emitAsync(event) {
let opts
let i = 1
@@ -17,12 +19,18 @@ module.exports = function emitAsync(event) {
}
const onError = opts != null && opts.onError
const addErrorHandler = onError
? (promise, listener) => promise.catch(error => onError(error, event, listener))
: identity
return Promise.all(
this.listeners(event).map(listener =>
new Promise(resolve => {
resolve(listener.apply(this, args))
}).catch(onError)
addErrorHandler(
new Promise(resolve => {
resolve(listener.apply(this, args))
}),
listener
)
)
)
}

View File

@@ -48,6 +48,7 @@
- @xen-orchestra/upload-ova patch
- @xen-orchestra/backups minor
- @xen-orchestra/backups-cli patch
- @xen-orchestra/emit-async major
- @xen-orchestra/mixins minor
- @xen-orchestra/proxy minor
- xo-server minor