summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/es_isolate.rs15
-rw-r--r--core/isolate.rs4
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
}
}