diff options
-rw-r--r-- | core/es_isolate.rs | 15 | ||||
-rw-r--r-- | core/isolate.rs | 4 |
2 files changed, 7 insertions, 12 deletions
diff --git a/core/es_isolate.rs b/core/es_isolate.rs index e0e414bc9..bc412c7b2 100644 --- a/core/es_isolate.rs +++ b/core/es_isolate.rs @@ -315,19 +315,14 @@ impl EsIsolate { let mut resolver = resolver_handle.get(scope).unwrap(); resolver_handle.reset(scope); - let exception = match ErrBox::downcast::<ErrWithV8Handle>(err) { - Ok(mut err) => { - let handle = err.get_handle(); - let exception = handle.get(scope).unwrap(); - handle.reset(scope); - exception - } - Err(err) => { + let exception = err + .downcast_ref::<ErrWithV8Handle>() + .and_then(|err| err.get_handle().get(scope)) + .unwrap_or_else(|| { let message = err.to_string(); let message = v8::String::new(scope, &message).unwrap(); v8::Exception::type_error(scope, message) - } - }; + }); resolver.reject(context, exception).unwrap(); scope.isolate().run_microtasks(); diff --git a/core/isolate.rs b/core/isolate.rs index 8bdd017a8..a9e5f44a5 100644 --- a/core/isolate.rs +++ b/core/isolate.rs @@ -1164,8 +1164,8 @@ impl ErrWithV8Handle { Self { err, handle } } - pub fn get_handle(&mut self) -> &mut v8::Global<v8::Value> { - &mut self.handle + pub fn get_handle(&self) -> &v8::Global<v8::Value> { + &self.handle } } |