summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Net/HTTP/Spore/Role/Request.pm10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/Net/HTTP/Spore/Role/Request.pm b/lib/Net/HTTP/Spore/Role/Request.pm
index a0d61b1..0af15f7 100644
--- a/lib/Net/HTTP/Spore/Role/Request.pm
+++ b/lib/Net/HTTP/Spore/Role/Request.pm
@@ -46,11 +46,19 @@ sub _execute_middlewares_on_response {
my ($self, $response, @middlewares) = @_;
foreach my $mw ( reverse @middlewares ) {
- my $res = $mw->($response);
+ my ($res, $error);
+ try {
+ $res = $mw->($response);
+ }catch{
+ $error = 1;
+ $response->code(599);
+ $response->body({error => $_, body=>$response->body});
+ };
$response = $res
if ( defined $res
&& Scalar::Util::blessed($res)
&& $res->isa('Net::HTTP::Spore::Response') );
+ last if $error;
}
$response;