| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index 7a761b68a5e1a86c618ed02bbc6bde1ac674922f..57809ce4f9b598116641fabb1947a685956458f7 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -1062,9 +1062,12 @@ void Isolate::ScheduleThrow(Object* exception) {
|
| // When scheduling a throw we first throw the exception to get the
|
| // error reporting if it is uncaught before rescheduling it.
|
| Throw(exception);
|
| - thread_local_top()->scheduled_exception_ = pending_exception();
|
| - thread_local_top()->external_caught_exception_ = false;
|
| - clear_pending_exception();
|
| + PropagatePendingExceptionToExternalTryCatch();
|
| + if (has_pending_exception()) {
|
| + thread_local_top()->scheduled_exception_ = pending_exception();
|
| + thread_local_top()->external_caught_exception_ = false;
|
| + clear_pending_exception();
|
| + }
|
| }
|
|
|
|
|
|
|