[2025/07/30 12:41 PM UTC] Error in reporting due to 429 errors

Incident

There were widespread reports of repeated 429 errors (too many requests) from users when executing the tests using neeto-playwright-reporter, preventing tests from being reported to NeetoPlaydash on 2025/07/30 12:00 PM UTC.

Investigation

We checked the logs and could see the errors were coming from the Honeybadger service, the service we use internally for error-tracking. We noticed that the Honeybadger requests were returning a 429 response. As the service received a 429 response, it additionally threw an error. Since the service is used for error reporting, the service calls were added to the catch block of the try-catch block for error handling. When the catch block in the try-catch block rethrew the error, the error eventually bubbled up to the upper layers.

Since the Playwright reporter lifecycle methods are not asynchronous (except for the onEnd block), there is a process.on('unhandledRejection') block which is used to handle any unhandled promise rejections. The errors thrown by Honeybadger eventually bubbled up here.

The unhandledRejection event handling is the last layer of defence against errors being thrown in the process, and a Honeybadger reporting was added in this block as well. Since this too threw an error, an infinite loop of unhandledRejection events were scheduled preventing any reporting from happening to NeetoPlaydash.

Remedy

Mechanisms were added to the latest release of neeto-playwright-reporter to ensure that this kind of infinite recursion wouldn't happen. Since this fix is mandatory to ensure continued reporting a forced upgrade was initiated which prevented reporters before version 2.0.2 from being able to report to NeetoPlaydash. A banner has been displayed on the top of NeetoPlaydash to alert the users of this upgrade and the reporter versions < 2.0.2 would alert the user in the CI to upgrade the version to continue. Version 2.0.2 has been thoroughly tested and no 429 errors were encountered during the testing.

NeetoKB Made with NeetoKB