send method

Implementation

Future<FittorResponse> send(FittorRequest request) async {
  var processedRequest = request;

  // Apply request interceptors
  for (final interceptor in _interceptors) {
    processedRequest = await interceptor.onRequest(processedRequest);
  }

  try {
    var response = await performRequest(processedRequest);

    // Apply response interceptors
    for (final interceptor in _interceptors) {
      response = await interceptor.onResponse(response);
    }

    return response;
  } catch (error, stackTrace) {
    // Apply error interceptors
    dynamic processedError = error;
    for (final interceptor in _interceptors) {
      processedError = await interceptor.onError(processedError, stackTrace);
    }

    if (processedError is Exception) {
      throw processedError;
    } else {
      rethrow;
    }
  }
}