Currently when a promise is rejected with a plain object instead of an Error Promise.reject({ code: 42, detail: 'oops' }), the catcher loses the object content - String(obj) produces "[object Object]".
The console catcher also falls back to event.reason?.message || String(event.reason), which either picks up an accidental message property or produces the same useless string.
