Index: utils/pub/io.dart |
diff --git a/utils/pub/io.dart b/utils/pub/io.dart |
index a8ec15891557bcbc5d9f96e9bbbe13b0035bdb4f..8ca26545fab02644e3c2a5c7b1dcc878fb5b9009 100644 |
--- a/utils/pub/io.dart |
+++ b/utils/pub/io.dart |
@@ -591,19 +591,17 @@ Future _doProcess(Function fn, String executable, List<String> args, |
/// Note that timing out will not cancel the asynchronous operation behind |
/// [input]. |
Future timeout(Future input, int milliseconds, String description) { |
- bool completed = false; |
var completer = new Completer(); |
var timer = new Timer(new Duration(milliseconds: milliseconds), () { |
- completed = true; |
completer.completeError(new TimeoutException( |
'Timed out while $description.')); |
}); |
input.then((value) { |
- if (completed) return; |
+ if (completer.isCompleted) return; |
timer.cancel(); |
completer.complete(value); |
}).catchError((e) { |
- if (completed) return; |
+ if (completer.isCompleted) return; |
timer.cancel(); |
completer.completeError(e.error, e.stackTrace); |
}); |