Since the `handleDisplayAvailableChange` will call the event listeners installed, those event listeners are callback function written by developer, they might have some errors at runtime.

Without using setTimeout here, `handleDisplayAvailableChange` gets invoked in the calling context of extension message listener that will capture all errors occurs in event listeners calling, and the developer would only see the an error occurred in extension message listener instead of the concrete error message in their event listener functions.

That is why `setTimeout` is used here. Maybe the better way is to improve extension message listener to throw the errors to developer instead of filtering them out.