diff --git a/command_table.cpp b/command_table.cpp
index c0e655a..668f19b 100644
--- a/command_table.cpp
+++ b/command_table.cpp
@@ -79,24 +79,24 @@
         bus->async_method_call(
             [handler, this](const boost::system::error_code& ec,
                             const IpmiDbusRspType& response) {
-                if (!ec)
-                {
-                    const uint8_t& cc = std::get<3>(response);
-                    const std::vector<uint8_t>& responseData =
-                        std::get<4>(response);
-                    std::vector<uint8_t> payload;
-                    payload.reserve(1 + responseData.size());
-                    payload.push_back(cc);
-                    payload.insert(payload.end(), responseData.begin(),
-                                   responseData.end());
-                    handler->outPayload = std::move(payload);
-                }
-                else
-                {
-                    std::vector<uint8_t> payload;
-                    payload.push_back(IPMI_CC_UNSPECIFIED_ERROR);
-                    handler->outPayload = std::move(payload);
-                }
+            if (!ec)
+            {
+                const uint8_t& cc = std::get<3>(response);
+                const std::vector<uint8_t>& responseData =
+                    std::get<4>(response);
+                std::vector<uint8_t> payload;
+                payload.reserve(1 + responseData.size());
+                payload.push_back(cc);
+                payload.insert(payload.end(), responseData.begin(),
+                               responseData.end());
+                handler->outPayload = std::move(payload);
+            }
+            else
+            {
+                std::vector<uint8_t> payload;
+                payload.push_back(IPMI_CC_UNSPECIFIED_ERROR);
+                handler->outPayload = std::move(payload);
+            }
             },
             "xyz.openbmc_project.Ipmi.Host", "/xyz/openbmc_project/Ipmi",
             "xyz.openbmc_project.Ipmi.Server", "execute", netFn, lun, cmd,
@@ -119,8 +119,8 @@
             }
         }
 
-        handler->outPayload =
-            iterator->second->executeCommand(commandData, handler);
+        handler->outPayload = iterator->second->executeCommand(commandData,
+                                                               handler);
 
         auto end = std::chrono::steady_clock::now();
 
