in lib/src/middleware.dart [49:75]
Middleware createMiddleware({
FutureOr<Response?> Function(Request)? requestHandler,
FutureOr<Response> Function(Response)? responseHandler,
FutureOr<Response> Function(Object error, StackTrace)? errorHandler,
}) {
requestHandler ??= (request) => null;
responseHandler ??= (response) => response;
FutureOr<Response> Function(Object, StackTrace)? onError;
if (errorHandler != null) {
onError = (error, stackTrace) {
if (error is HijackException) throw error;
return errorHandler(error, stackTrace);
};
}
return (Handler innerHandler) {
return (request) {
return Future.sync(() => requestHandler!(request)).then((response) {
if (response != null) return response;
return Future.sync(() => innerHandler(request))
.then((response) => responseHandler!(response), onError: onError);
});
};
};
}