stallUntilAborted function

  1. @visibleForTesting
Future<StreamedResponse> stallUntilAborted(
  1. BaseRequest request
)

Never answers, so only completing request's abort trigger, which surfaces as a RequestAbortedException, ends the request.

A request that is not Abortable stalls forever.

Implementation

@visibleForTesting
Future<StreamedResponse> stallUntilAborted(BaseRequest request) {
  final completer = Completer<StreamedResponse>();
  if (request is Abortable) {
    final abortTrigger = request.abortTrigger;
    unawaited(
      abortTrigger?.then((_) {
        if (!completer.isCompleted) {
          completer.completeError(
            RequestAbortedException(request.url),
            StackTrace.current,
          );
        }
      }),
    );
  }
  return completer.future;
}