diff --git a/src/plugins/converse-rai.js b/src/plugins/converse-rai.js
index 7ad059de4d5464925d5be470622ab3bb13c0fbbc..3b5fb22e17e9741874ded24f9440e2a1f4edf6c2 100644
--- a/src/plugins/converse-rai.js
+++ b/src/plugins/converse-rai.js
@@ -108,7 +108,7 @@ converse.plugins.add('converse-rai', {
        * @param {string|Array} jids
        * @returns {void}
        */
-      subscribe(jids) {
+      async subscribe(jids) {
         if (!api.settings.get('muc_subscribe_to_rai')) {
           log.error(`You must enable the 'muc_subscribe_to_rai' option before subscribing to a MUC.`);
           return;
@@ -118,15 +118,16 @@ converse.plugins.add('converse-rai', {
           jids = [jids];
         }
 
-        const muc_domains = jids.map(jid => Strophe.getDomainFromJid(jid));
+        const muc_domains = _.uniq(jids.map(jid => Strophe.getDomainFromJid(jid)));
 
-        _.uniq(muc_domains).forEach(muc_domain => {
-          const rai = $pres({ to: muc_domain, id: u.getUniqueId() }).c('rai', {
+        for (let domain of muc_domains) {
+          const rai = $pres({ to: domain, id: u.getUniqueId() }).c('rai', {
             'xmlns': Strophe.NS.RAI,
           });
-          api.send(rai);
-          log.debug(`Sent RAI stanza for domain "${muc_domain}"`);
-        });
+
+          await _converse.connection.send(rai);
+          log.debug(`Sent RAI stanza for domain "${domain}"`);
+        }
       },
     });
 
diff --git a/src/plugins/sib-subscribe-to-rai.js b/src/plugins/sib-subscribe-to-rai.js
index 100673b5502c84303413f30da8b9e4018e2bd356..cc421d5b5fd78b2d38125e9b8f32101f40693329 100644
--- a/src/plugins/sib-subscribe-to-rai.js
+++ b/src/plugins/sib-subscribe-to-rai.js
@@ -7,7 +7,8 @@ converse.plugins.add('sib-subscribe-to-rai', {
   dependencies: [
     'converse-rai',
   ],
-  async initialize() {
+  initialize() {
+    const { log } = converse.env;
     const _converse = this._converse;
     const { api } = _converse;
 
@@ -51,14 +52,16 @@ converse.plugins.add('sib-subscribe-to-rai', {
       }, 250);
     });
 
-    // @MattJ Here userRooms is an array of each jabberID the user is on.
-    let userRooms = (await Promise.all([
-      getCircles,
-      getProjects,
-    ])).flat();
+    api.listen.on('connected', async () => {
 
-    api.listen.on('connected', () => {
-      api.rooms.subscribe(userRooms);
+      // @MattJ Here userRooms is an array of each jabberID the user is on.
+      let userRooms = (await Promise.all([
+        getCircles,
+        getProjects,
+      ])).flat();
+
+      log.info(`User rooms: ${userRooms.join(', ')}`);
+      await api.rooms.subscribe(userRooms);
     });
 
     api.listen.on('chatRoomHasActivity', jid => {