How do I catch an error that gets thrown asynchronously by Reflect.get(target, name, receiver)
within the Proxy handler?
I'm using Proxy and Reflect to wrap an API class, so that I can catch any Network exceptions and gracefully display error messages to the user.
//Wrapper.js let handler = { get: (target, name, receiver) => { try { Reflect.get(target, name, receiver); //throws Error asynchronously } catch (e) { console.log('caught error', e); } }; export default new Proxy(new API(), handler);
//App.js import Wrapper from './Wrapper'; Wrapper.asyncFunction(); //throws uncaught Error
//API.js class API { get user() { return new User() } }
//User.js class User { /** * List all users */ all() { return new Promise((resolve, reject) => { reject(new Error('Network error')); }); } }
When an error is thrown, inside Reflect.get() "caught error" never gets printed and remains uncaught.