diff --git a/src/snek/snek-socket.ts b/src/snek/snek-socket.ts
index 7d51e27..aa11a4b 100644
--- a/src/snek/snek-socket.ts
+++ b/src/snek/snek-socket.ts
@@ -196,7 +196,7 @@ export class Bot extends EventEmitter<
 
         return new Promise((resolve, reject) => {
           setTimeout(() => {
-            resolve(this.connect().then(() => this.send(name, ...args)))
+            this.connect().then(() => this.send(name, ...args)).catch(reject).then(resolve)
           }, 1000)
         })
       })
@@ -251,11 +251,11 @@ export class Bot extends EventEmitter<
 
         this.#ws = null
         this.emit("close", { code: event.code, reason: event.reason })
-        this.#processingMessages.forEach((message) => {
+        for (const message of this.#processingMessages.values()) {
           message.data.reject(
             new ConnectionClosedError(event.code, event.reason),
           )
-        })
+        }
         this.#processingMessages.clear()
 
         if (this.autoReconnect) {
@@ -270,7 +270,7 @@ export class Bot extends EventEmitter<
       return connectedPromise.promise
     },
     100,
-    { leading: true, trailing: false },
+    { leading: true, trailing: true },
   )
 
   sendMessage(channelUID: string, message: string) {
@@ -280,9 +280,9 @@ export class Bot extends EventEmitter<
   async uploadFiles(channelUID: string, ...files: File[]) {
     const imageForm = new FormData()
     imageForm.append("channel_uid", channelUID)
-    files.forEach((file) => {
+    for (const file of files) {
       imageForm.append("files[]", file)
-    })
+    }
 
     return await fetch("https://snek.molodetz.nl/drive.bin", {
       method: "POST",