diff --git a/include/sdbusplus/async/callback.hpp b/include/sdbusplus/async/callback.hpp
index 61efab8..9f738cf 100644
--- a/include/sdbusplus/async/callback.hpp
+++ b/include/sdbusplus/async/callback.hpp
@@ -35,7 +35,7 @@
  *  For example, `sd_bus_call_async` could be turned into a Sender with a
  *  call to this and a small lambda such as:
  *  ```
- *      callback([bus = get_busp(ctx.get_bus()),
+ *      callback([bus = get_busp(ctx),
  *                msg = std::move(msg)](auto cb, auto data) {
  *          return sd_bus_call_async(bus, nullptr, msg.get(), cb, data, 0);
  *      })
diff --git a/include/sdbusplus/async/context.hpp b/include/sdbusplus/async/context.hpp
index 40356d5..828f42a 100644
--- a/include/sdbusplus/async/context.hpp
+++ b/include/sdbusplus/async/context.hpp
@@ -71,6 +71,10 @@
     {
         return bus;
     }
+    operator bus_t&() noexcept
+    {
+        return bus;
+    }
 
     bool request_stop() noexcept
     {
diff --git a/include/sdbusplus/async/proxy.hpp b/include/sdbusplus/async/proxy.hpp
index 5934a7e..4e00005 100644
--- a/include/sdbusplus/async/proxy.hpp
+++ b/include/sdbusplus/async/proxy.hpp
@@ -134,7 +134,7 @@
         // Use 'callback' to perform the operation and "then" "unpack" the
         // contents.
         return callback(
-                   [bus = get_busp(ctx.get_bus()),
+                   [bus = get_busp(ctx),
                     msg = std::move(msg)](auto cb, auto data) mutable {
             return sd_bus_call_async(bus, nullptr, msg.get(), cb, data, 0);
         }) | execution::then([](message_t&& m) { return m.unpack<Rs...>(); });
diff --git a/src/async/context.cpp b/src/async/context.cpp
index 5bb58ae..b324c6c 100644
--- a/src/async/context.cpp
+++ b/src/async/context.cpp
@@ -281,7 +281,7 @@
 
     // Get the bus' timeout.
     uint64_t to_usec = 0;
-    sd_bus_get_timeout(get_busp(ctx.get_bus()), &to_usec);
+    sd_bus_get_timeout(get_busp(ctx), &to_usec);
 
     if (to_usec == UINT64_MAX)
     {
diff --git a/src/async/match.cpp b/src/async/match.cpp
index ed5237b..7dceba4 100644
--- a/src/async/match.cpp
+++ b/src/async/match.cpp
@@ -13,8 +13,8 @@
     };
 
     sd_bus_slot* s;
-    auto r = sd_bus_add_match(get_busp(ctx.get_bus()), &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)");
