A React error boundary component that captures and handles both synchronous and asynchronous errors, including unhandled promise rejections