close method
Close this HTTP handler.
Returns the same future as done.
Implementation
Future<void> close() {
Future<void> doClose() async {
_isClosed = true;
// Timers associated with these completers will be cancelled in
// the finally block from the try/catch that the completer is awaited in.
for (final completer in _pendingRateLimits) {
completer.completeError(ClientClosedError());
}
httpClient.close();
_onRequestController.close();
_onResponseController.close();
_onRateLimitController.close();
}
if (!_isClosed) {
final closeFuture = doClose();
if (!_doneCompleter.isCompleted) {
_doneCompleter.complete(closeFuture);
} else {
closeFuture.ignore();
}
}
assert(_doneCompleter.isCompleted);
return _doneCompleter.future;
}