Fix a bug where the HttpClient response stream was cancelled after completed (#1792)
* Fix a bug where the HttpClient response stream was cancelled after completed
* Update version to 1.5.0-beta.2
diff --git a/pkgs/http/CHANGELOG.md b/pkgs/http/CHANGELOG.md
index d29dfc2..80d9110 100644
--- a/pkgs/http/CHANGELOG.md
+++ b/pkgs/http/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.5.0-beta.2
+
+* Fixed a bug in `IOClient` where the `HttpClient`'s response stream was
+ cancelled after the response stream was completed.
+
## 1.5.0-beta
* Added support for aborting requests before they complete.
diff --git a/pkgs/http/lib/src/io_client.dart b/pkgs/http/lib/src/io_client.dart
index 7d64af2..f259181 100644
--- a/pkgs/http/lib/src/io_client.dart
+++ b/pkgs/http/lib/src/io_client.dart
@@ -175,7 +175,13 @@
ioResponseSubscription = response.listen(
responseController.add,
- onDone: responseController.close,
+ onDone: () {
+ // `reponseController.close` will trigger the `onCancel` callback.
+ // Assign `ioResponseSubscription` to `null` to avoid calling its
+ // `cancel` method.
+ ioResponseSubscription = null;
+ unawaited(responseController.close());
+ },
onError: (Object err, StackTrace stackTrace) {
if (err is HttpException) {
responseController.addError(
diff --git a/pkgs/http/pubspec.yaml b/pkgs/http/pubspec.yaml
index e243e5f..442b6b9 100644
--- a/pkgs/http/pubspec.yaml
+++ b/pkgs/http/pubspec.yaml
@@ -1,5 +1,5 @@
name: http
-version: 1.5.0-beta
+version: 1.5.0-beta.2
description: A composable, multi-platform, Future-based API for HTTP requests.
repository: https://github.com/dart-lang/http/tree/master/pkgs/http