(chunk)
| 224 | } |
| 225 | |
| 226 | async write(chunk) { |
| 227 | if (this[kState].unref) { |
| 228 | this[kState].unref = false; |
| 229 | this[kState].port.ref(); |
| 230 | } |
| 231 | if (this[kState].backpressurePromise === undefined) { |
| 232 | this[kState].backpressurePromise = { |
| 233 | promise: PromiseResolve(), |
| 234 | resolve: undefined, |
| 235 | reject: undefined, |
| 236 | }; |
| 237 | } |
| 238 | await this[kState].backpressurePromise.promise; |
| 239 | this[kState].backpressurePromise = PromiseWithResolvers(); |
| 240 | try { |
| 241 | this[kState].port.postMessage({ type: 'chunk', value: chunk }); |
| 242 | } catch (error) { |
| 243 | if (error instanceof DOMException) { |
| 244 | // eslint-disable-next-line no-ex-assign |
| 245 | error = new CloneableDOMException(error.message, error.name); |
| 246 | } |
| 247 | this[kState].port.postMessage({ type: 'error', value: error }); |
| 248 | this[kState].port.close(); |
| 249 | throw error; |
| 250 | } |
| 251 | } |
| 252 | |
| 253 | close() { |
| 254 | this[kState].port.postMessage({ type: 'close' }); |
no test coverage detected