request method

  1. @override
Stream<Response> request(
  1. Request request, [
  2. NextLink? forward
])

A function called when a request reaches this Link

Implementation

@override
Stream<Response> request(
  Request request, [
  forward,
]) async* {
  await for (final result in Result.captureStream(forward!(request))) {
    if (result.isError) {
      final error = result.asError!.error;

      if (onException != null && error is LinkException) {
        final stream = onException!(request, forward, error);

        if (stream != null) {
          yield* stream;

          return;
        }
      }

      yield* Stream.error(error);
    }

    if (result.isValue) {
      final response = result.asValue!.value;
      final errors = response.errors;

      if (onGraphQLError != null && errors != null && errors.isNotEmpty) {
        final stream = onGraphQLError!(request, forward, response);

        if (stream != null) {
          yield* stream;

          return;
        }
      }

      yield response;
    }
  }
}