On 9/12/14, 3:45 PM, Domenic Denicola wrote:
var p = Promise.reject(new Error("boo"));

setTimeout(() => {
   window.onrejectionhandled = () => console.log("got here");
}, 100);

setTimeout(() => {
   p.catch(() => {});
}, 200);

That's a good proxy for what I was envisioning...

In this case the event would be fired

By "the" event do you mean the error event or the rejectionhandled event?

but no listener would be present at that time, so "got here" would not be 
logged.

In my mental model based on your initial mail here, the rejectionhandled event would get fired at the point when catch() is called, which is after window.onrejectionhandled is set.

The promise itself can't be shipped out of the worker scope to the onerror on 
the Worker itself; that's why I was asking what we want to do with workers.  If 
we want a unique key thing there we need some non-object (or at least 
structured clonable) key.

Oh, hmm, I didn't realize you could listen to worker errors via 
`workerInstance.onerror = ...` in the creating script; I thought you were 
referring to `self.onerror = ...` inside the worker.

We have both. self.onerror gets first dibs at the error, and if it doesn't do anything to prevent the error propagating, then workerInstance gets an error event fired at it.

More reason for an integer key, I guess. (Call it promiseId, presumably?) The 
alternative would be not letting you catch such errors via 
`workerInstance.onerror`, but I assume that would just complicate things and 
fit poorly with any telemetry frameworks that try to collect errors from both 
the window and any spawned workers.

Yeah, I have no good insights into what, if anything, telemetry frameworks do with error events on workers.

-Boris

Reply via email to