@@ -87,6 +87,7 @@ class Work extends EventEmitter {
87
87
if ( typeof options == 'function' ) {
88
88
options = { callback : options } ;
89
89
}
90
+ const d = x => typeof options . dbg == 'function' ? options . dbg ( x ) : dbg ( x ) ;
90
91
const w = new this ( workers ) ;
91
92
return new Promise ( ( resolve , reject ) => {
92
93
let id = ++ seq ;
@@ -109,7 +110,7 @@ class Work extends EventEmitter {
109
110
if ( w . works . length == 0 ) {
110
111
always ( )
111
112
. then ( ( ) => {
112
- debug ( '%d> [%d] resolved with %s' , id , idx , dbg ( w . rres ) ) ;
113
+ debug ( '%d> [%d] resolved with %s' , id , idx , d ( w . rres ) ) ;
113
114
resolve ( w . rres ) ;
114
115
} )
115
116
. catch ( err => reject ( err ) )
@@ -132,7 +133,10 @@ class Work extends EventEmitter {
132
133
debug ( '%d> [%d] rejected but return as resolved' , id , idx ) ;
133
134
resolve ( ) ;
134
135
} else {
135
- debug ( '%d> [%d] rejected with %s' , id , idx , dbg ( err ) ) ;
136
+ debug ( '%d> [%d] rejected with %s' , id , idx , d ( err ) ) ;
137
+ if ( typeof options . onerror == 'function' ) {
138
+ options . onerror ( w ) ;
139
+ }
136
140
reject ( err ) ;
137
141
}
138
142
} )
@@ -141,8 +145,9 @@ class Work extends EventEmitter {
141
145
}
142
146
// worker main handler
143
147
const f = worker => {
148
+ w . current = worker ;
144
149
const idx = worker . idx ;
145
- const winfo = worker . handler . toString ( ) ;
150
+ const winfo = worker . info ;
146
151
const skip = ! worker . isEnabled ( w ) ;
147
152
try {
148
153
if ( skip ) {
@@ -152,7 +157,7 @@ class Work extends EventEmitter {
152
157
debug ( '%d> [%d] call %s' , id , idx , winfo ) ;
153
158
worker . handler ( w )
154
159
. then ( res => {
155
- debug ( '%d> [%d] return %s' , id , idx , dbg ( res ) ) ;
160
+ debug ( '%d> [%d] return %s' , id , idx , d ( res ) ) ;
156
161
w . rres = res ;
157
162
next ( idx , res ) ;
158
163
} )
@@ -214,6 +219,10 @@ class Worker
214
219
return typeof this . enabled == 'function' ? this . enabled ( caller ) : true ;
215
220
}
216
221
222
+ get info ( ) {
223
+ return this . handler . toString ( ) ;
224
+ }
225
+
217
226
static create ( work ) {
218
227
if ( work instanceof Worker ) {
219
228
return work ;
0 commit comments