diff --git a/synapse/http/matrixfederationclient.py b/synapse/http/matrixfederationclient.py
index 74ea6bcf8ed284f27b8f3a70fe806be1420e9d21..59e758fefb349b5f6d8391eafee326c79761dee8 100644
--- a/synapse/http/matrixfederationclient.py
+++ b/synapse/http/matrixfederationclient.py
@@ -217,14 +217,14 @@ class MatrixFederationHttpClient(object):
         """
         response = yield self._send_request(**send_request_args)
 
-        if not try_trailing_slash_on_400:
-            defer.returnValue(response)
-
         # Check if it's necessary to retry with a trailing slash
         body = yield _handle_json_response(
             self.hs.get_reactor(), self.default_timeout, request, response,
         )
 
+        if not try_trailing_slash_on_400:
+            defer.returnValue(body)
+
         # Retry with a trailing slash if we received a 400 with
         # 'M_UNRECOGNIZED' which some endpoints can return when omitting a
         # trailing slash on Synapse <=v0.99.2.