diff --git a/src/dbus/NhekoDBusBackend.cpp b/src/dbus/NhekoDBusBackend.cpp
index 836475ee30dc258eef98378ae7c2f05afdb08536..d49ff2a5813aed0e76f99e99b05f077e16025ef7 100644
--- a/src/dbus/NhekoDBusBackend.cpp
+++ b/src/dbus/NhekoDBusBackend.cpp
@@ -21,6 +21,8 @@ NhekoDBusBackend::NhekoDBusBackend(RoomlistModel *parent)
 QVector<nheko::dbus::RoomInfoItem>
 NhekoDBusBackend::rooms(const QDBusMessage &message)
 {
+    message.setDelayedReply(true);
+
     const auto roomListModel = m_parent->models;
     QSharedPointer<QVector<nheko::dbus::RoomInfoItem>> model{
       new QVector<nheko::dbus::RoomInfoItem>};
@@ -43,8 +45,8 @@ NhekoDBusBackend::rooms(const QDBusMessage &message)
               room->roomId(), alias, room->roomName(), image, room->notificationCount()});
 
             if (model->length() == roomListModelSize) {
-                auto reply = message.createReply();
                 nhlog::ui()->debug("Sending {} rooms over D-Bus...", model->size());
+                auto reply = message.createReply();
                 reply << QVariant::fromValue(*model);
                 QDBusConnection::sessionBus().send(reply);
                 nhlog::ui()->debug("Rooms successfully sent to D-Bus.");