From afe881c2e93c2fb83e5a245d1d6fcd9420ac18b8 Mon Sep 17 00:00:00 2001
From: Will Hunt <will@half-shot.uk>
Date: Mon, 29 Apr 2019 17:47:50 +0100
Subject: [PATCH] Linting

---
 src/clientfactory.ts    |  6 ++++--
 src/discordas.ts        | 13 ++++++++-----
 src/util.ts             |  2 +-
 test/test_discordbot.ts |  3 +--
 test/test_util.ts       |  5 +++--
 5 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/clientfactory.ts b/src/clientfactory.ts
index 84bebbd..18c8a2e 100644
--- a/src/clientfactory.ts
+++ b/src/clientfactory.ts
@@ -65,7 +65,9 @@ export class DiscordClientFactory {
 
         await client.login(token);
         const id = client.user.id;
-        client.destroy();
+        client.destroy().catch(() => {
+            log.warn("Failed to destroy client ", id);
+        });
         return id;
     }
 
@@ -73,7 +75,7 @@ export class DiscordClientFactory {
         if (userId === null) {
             return this.botClient;
         }
-        
+
         if (this.clients.has(userId)) {
             log.verbose("Returning cached user client for", userId);
             return this.clients.get(userId) as DiscordClient;
diff --git a/src/discordas.ts b/src/discordas.ts
index e7f6db7..6e28a04 100644
--- a/src/discordas.ts
+++ b/src/discordas.ts
@@ -94,9 +94,12 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) {
                 } catch (err) { log.error("Exception thrown while handling \"onAliasQuery\" event", err); }
             },
             onEvent: async (request) => {
-                const done = function (resolve, reject) {
-                    (this as Promise<any>).then(resolve);
-                    (this as Promise<any>).then(reject);
+                // tslint:disable-next-line no-any
+                const done = function(resolve: (res: any) => void, reject: (err: Error) => void) {
+                    // tslint:disable-next-line no-invalid-this no-floating-promises
+                    (this as Promise<{}>).then(resolve);
+                    // tslint:disable-next-line no-invalid-this no-floating-promises
+                    (this as Promise<{}>).then(reject);
                 };
                 try {
                     // Build our own context.
@@ -115,8 +118,8 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) {
 
                     await request.outcomeFrom({
                         done,
-                        ...callbacks.onEvent(request, context)
-                    } as IRequestPromise<any>);
+                        ...callbacks.onEvent(request, context),
+                    } as IRequestPromise<{}>);
                 } catch (err) {
                     log.error("Exception thrown while handling \"onEvent\" event", err);
                     await request.outcomeFrom({done, ...Promise.reject("Failed to handle")});
diff --git a/src/util.ts b/src/util.ts
index fd3790d..96ab13d 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -52,7 +52,7 @@ export interface IPatternMap {
 }
 
 export interface IRequestPromise<T> extends PromiseLike<T> {
-    done (resolve: (msg: T) => {}, reject: (err: Error) => {}): void;
+    done(resolve: (msg: T) => {}, reject: (err: Error) => {}): void;
 }
 
 export class Util {
diff --git a/test/test_discordbot.ts b/test/test_discordbot.ts
index dc3b79f..4730603 100644
--- a/test/test_discordbot.ts
+++ b/test/test_discordbot.ts
@@ -65,11 +65,10 @@ const modDiscordBot = Proxyquire("../src/bot", {
     "./clientfactory": require("./mocks/discordclientfactory"),
     "./util": {
         Util: {
-            AsyncForEach: Util.AsyncForEach,
+            ...Util,
             UploadContentFromUrl: async () => {
                 return {mxcUrl: "uploaded"};
             },
-            DelayedPromise: Util.DelayedPromise,
         },
     },
 });
diff --git a/test/test_util.ts b/test/test_util.ts
index 45c39b1..1766426 100644
--- a/test/test_util.ts
+++ b/test/test_util.ts
@@ -181,9 +181,10 @@ describe("Util", () => {
     });
     describe("DelayedPromise", () => {
         it("delays for some time", async () => {
+            const DELAY_FOR = 250;
             const t = Date.now();
-            await Util.DelayedPromise(250);
-            expect(Date.now()).to.be.greaterThan(t + 249);
+            await Util.DelayedPromise(DELAY_FOR);
+            expect(Date.now()).to.be.greaterThan(t + DELAY_FOR - 1);
         });
     });
 });
-- 
GitLab