my problem with this is that the exception will happen in a place where we control nothing: neither in the "waitForPerfEvents" caller nor in the callback.

How much effort would it be to convert waitForPerfEvents to use a Promise instead, so that we can either resolve/reject it?

Another possibility is to have an errorCallback.
Another dirty possibility is to pass an error to the callback (instead of runResults) and make the caller check this.