Index: sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart b/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
index 7c4e2a1f5f64824f361677fc7d71eedf22863d79..c92791b6c67d20908336b8b280f449dde1c044f2 100644 |
--- a/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
+++ b/sdk/lib/_internal/pub/lib/src/barback/load_transformers.dart |
@@ -12,6 +12,7 @@ import 'package:barback/barback.dart'; |
// TODO(nweiz): don't import from "src" once issue 14966 is fixed. |
import 'package:barback/src/internal_asset.dart'; |
import 'package:source_maps/source_maps.dart'; |
+import 'package:stack_trace/stack_trace.dart'; |
import '../barback.dart'; |
import '../dart.dart' as dart; |
@@ -542,7 +543,7 @@ Map _serializeId(AssetId id) => {'package': id.package, 'path': id.path}; |
/// throws an error, that will also be sent. |
void _respond(wrappedMessage, callback(message)) { |
var replyTo = wrappedMessage['replyTo']; |
- new Future.sync(() => callback(wrappedMessage['message'])) |
+ syncFuture(() => callback(wrappedMessage['message'])) |
.then((result) => replyTo.send({'type': 'success', 'value': result})) |
.catchError((error, stackTrace) { |
// TODO(nweiz): at least MissingInputException should be preserved here. |
@@ -565,10 +566,11 @@ Future _call(SendPort port, message) { |
'replyTo': receivePort.sendPort |
}); |
- return receivePort.first.then((response) { |
+ return Chain.track(receivePort.first).then((response) { |
if (response['type'] == 'success') return response['value']; |
assert(response['type'] == 'error'); |
return new Future.error( |
- new dart.CrossIsolateException.deserialize(response['error'])); |
+ new dart.CrossIsolateException.deserialize(response['error']), |
+ new Chain.current()); |
}); |
} |