diff --git a/test/http_outgoing_size_test.dart b/test/http_outgoing_size_test.dart
new file mode 100644
index 0000000..8c16c03
--- /dev/null
+++ b/test/http_outgoing_size_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:async';
+import 'dart:typed_data';
+
+import 'package:http_io/http_io.dart';
+import 'package:test/test.dart';
+
+Future<Null> testChunkedBufferSizeMsg() {
+  final completer = new Completer<Null>();
+  // Buffer of same size as our internal buffer, minus 4. Makes us hit the
+  // boundary.
+  var sendData = new Uint8List(8 * 1024 - 4);
+  for (int i = 0; i < sendData.length; i++) sendData[i] = i % 256;
+
+  HttpServer.bind('127.0.0.1', 0).then((server) {
+    server.listen((request) {
+      // Chunked is on by default. Be sure no data is lost when sending several
+      // chunks of data.
+      request.response.add(sendData);
+      request.response.add(sendData);
+      request.response.add(sendData);
+      request.response.add(sendData);
+      request.response.add(sendData);
+      request.response.add(sendData);
+      request.response.add(sendData);
+      request.response.add(sendData);
+      request.response.close();
+    });
+    var client = new HttpClient();
+    client.get('127.0.0.1', server.port, '/').then((request) {
+      request.headers.set(HttpHeaders.ACCEPT_ENCODING, "");
+      return request.close();
+    }).then((response) {
+      var buffer = [];
+      response.listen((data) => buffer.addAll(data), onDone: () {
+        expect(sendData.length * 8, equals(buffer.length));
+        for (int i = 0; i < buffer.length; i++) {
+          expect(sendData[i % sendData.length], equals(buffer[i]));
+        }
+        server.close();
+        completer.complete();
+      });
+    });
+  });
+  return completer.future;
+}
+
+void main() {
+  test('chunkedBufferSizeMessage', testChunkedBufferSizeMsg);
+}
