diff --git a/src/async/context.cpp b/src/async/context.cpp
index ad45c4d..96535fa 100644
--- a/src/async/context.cpp
+++ b/src/async/context.cpp
@@ -9,8 +9,8 @@
 
 context::context(bus_t&& b) : bus(std::move(b))
 {
-    dbus_source = event_loop.add_io(bus.get_fd(), EPOLLIN, dbus_event_handle,
-                                    this);
+    dbus_source =
+        event_loop.add_io(bus.get_fd(), EPOLLIN, dbus_event_handle, this);
 }
 
 namespace details
@@ -84,9 +84,9 @@
 
     explicit wait_process_sender(context& ctx) : context_ref(ctx) {}
 
-    friend auto tag_invoke(execution::get_completion_signatures_t,
-                           const wait_process_sender&, auto)
-        -> execution::completion_signatures<execution::set_value_t()>;
+    friend auto tag_invoke(
+        execution::get_completion_signatures_t, const wait_process_sender&,
+        auto) -> execution::completion_signatures<execution::set_value_t()>;
 
     template <execution::receiver R>
     friend auto tag_invoke(execution::connect_t, wait_process_sender&& self,
diff --git a/src/async/match.cpp b/src/async/match.cpp
index 9ac3cd0..bedce38 100644
--- a/src/async/match.cpp
+++ b/src/async/match.cpp
@@ -6,15 +6,15 @@
 slot_t match::makeMatch(context& ctx, const std::string_view& pattern)
 {
     // C-style callback to redirect into this::handle_match.
-    static auto match_cb = [](message::msgp_t msg, void* ctx,
-                              sd_bus_error*) noexcept {
-        static_cast<match*>(ctx)->handle_match(message_t{msg});
-        return 0;
-    };
+    static auto match_cb =
+        [](message::msgp_t msg, void* ctx, sd_bus_error*) noexcept {
+            static_cast<match*>(ctx)->handle_match(message_t{msg});
+            return 0;
+        };
 
     sd_bus_slot* s;
-    auto r = sd_bus_add_match(get_busp(ctx), &s, pattern.data(), match_cb,
-                              this);
+    auto r =
+        sd_bus_add_match(get_busp(ctx), &s, pattern.data(), match_cb, this);
     if (r < 0)
     {
         throw exception::SdBusError(-r, "sd_bus_add_match (async::match)");
