diff --git a/lib/http/session.cpp b/lib/http/session.cpp
index dd0ba09fea5c8ce2efff6334ca16d23def462631..cdff266c6d0bfea16f6047964a3bed9d52151135 100644
--- a/lib/http/session.cpp
+++ b/lib/http/session.cpp
@@ -99,10 +99,12 @@ Session::shutdown()
 void
 Session::on_request_complete()
 {
-        if (is_shutting_down_)
+        boost::system::error_code ec(error_code);
+        if (is_shutting_down_) {
+                on_failure(id, ec);
                 return;
+        }
 
-        boost::system::error_code ec(error_code);
         on_success(id, parser.get(), ec);
 
         shutdown();