| Index: runtime/vm/isolate.cc
|
| diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
|
| index e6e15646830edf2c38fb814aa40f7f46ed92aac1..3c6c88b8049299086efe71ec19e2c6e858493fbd 100644
|
| --- a/runtime/vm/isolate.cc
|
| +++ b/runtime/vm/isolate.cc
|
| @@ -2192,12 +2192,10 @@ RawObject* Isolate::InvokePendingServiceExtensionCalls() {
|
| "[+%" Pd64 "ms] Isolate %s : _runExtension complete for %s\n",
|
| Dart::timestamp(), name(), method_name.ToCString());
|
| }
|
| + // Propagate the error.
|
| if (result.IsError()) {
|
| - if (result.IsUnwindError()) {
|
| - // Propagate the unwind error. Remaining service extension calls
|
| - // are dropped.
|
| - return result.raw();
|
| - } else {
|
| + // Remaining service extension calls are dropped.
|
| + if (!result.IsUnwindError()) {
|
| // Send error back over the protocol.
|
| Service::PostError(method_name,
|
| parameter_keys,
|
| @@ -2206,9 +2204,13 @@ RawObject* Isolate::InvokePendingServiceExtensionCalls() {
|
| id,
|
| Error::Cast(result));
|
| }
|
| + return result.raw();
|
| }
|
| + // Drain the microtask queue.
|
| result = DartLibraryCalls::DrainMicrotaskQueue();
|
| + // Propagate the error.
|
| if (result.IsError()) {
|
| + // Remaining service extension calls are dropped.
|
| return result.raw();
|
| }
|
| }
|
|
|