feat(ext/web): Add error events for event listener and timer errors (#14159)

- feat: Add handleable error event for even listener errors
- feat: Add handleable error event for setTimeout()/setInterval() errors
- feat: Add Deno.core.destructureError()
- feat: Add Deno.core.terminate()
- fix: Don't throw listener errors from dispatchEvent()
- fix: Use biased mode when selecting between mod_evaluate() and
  run_event_loop() results
This commit is contained in:
Nayeem Rahman 2022-04-13 10:50:57 +01:00 committed by GitHub
parent d621ce1cf0
commit 4d18f558e4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
35 changed files with 439 additions and 130 deletions

View file

@ -217,6 +217,10 @@ impl MainWorker {
async fn evaluate_module(&mut self, id: ModuleId) -> Result<(), AnyError> {
let mut receiver = self.js_runtime.mod_evaluate(id);
tokio::select! {
// Not using biased mode leads to non-determinism for relatively simple
// programs.
biased;
maybe_result = &mut receiver => {
debug!("received module evaluate {:#?}", maybe_result);
maybe_result.expect("Module evaluation result not provided.")