send method

  1. @override
Future<Response> send(
  1. Request request
)
override

Sends the request and returns the Response

Implementation

@override
Future<Response> send(Request request) async {
  if (_isClosed) {
    throw StateError('HTTP Client is already closed.');
  }
  _ongoingCount++;
  Future? rsf;
  Future? bf;
  try {
    rsf = _delegate.send(request);
    _ongoingRequests.add(rsf);
    final rs = await rsf;
    bf = rs.done;
    if (bf != null) {
      _ongoingContents.add(bf);
      // ignore: unawaited_futures
      bf.whenComplete(() {
        _ongoingContents.remove(bf);
        _ongoingCount--;
        _completedCount++;
      });
    }
    return rs;
  } finally {
    _ongoingRequests.remove(rsf);
    if (bf == null) {
      _ongoingCount--;
      _completedCount++;
    }
  }
}