diff --git a/src/discordas.ts b/src/discordas.ts
index 08bd0ab7b259ef86125fe18e5ca12f1151b2c318..aa237f5ee1464ff18fb1c3dd1cbf6e985f2d152a 100644
--- a/src/discordas.ts
+++ b/src/discordas.ts
@@ -22,7 +22,6 @@ import { DiscordBot } from "./bot";
 import { DiscordStore } from "./store";
 import { Log } from "./log";
 import "source-map-support/register";
-import { IRequestPromise } from "./util";
 
 const log = new Log("DiscordAS");
 
@@ -94,15 +93,6 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) {
                 } catch (err) { log.error("Exception thrown while handling \"onAliasQuery\" event", err); }
             },
             onEvent: async (request) => {
-                // This function emulates the Bluebird.done function so the underlying bridge library doesn't
-                // break.
-                // 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<{}>).catch(reject);
-                };
                 try {
                     // Build our own context.
                     if (!store.roomStore) {
@@ -110,21 +100,20 @@ async function run(port: number, fileConfig: DiscordBridgeConfig) {
                         return;
                     }
                     const roomId = request.getData().room_id;
+
                     const context: BridgeContext = {
                         rooms: {},
                     };
+
                     if (roomId) {
                         const entries  = await store.roomStore.getEntriesByMatrixId(roomId);
                         context.rooms = entries[0] || {};
                     }
 
-                    await request.outcomeFrom({
-                        done,
-                        ...callbacks.onEvent(request, context),
-                    } as IRequestPromise<{}>);
+                    await request.outcomeFrom(callbacks.onEvent(request, context));
                 } catch (err) {
                     log.error("Exception thrown while handling \"onEvent\" event", err);
-                    await request.outcomeFrom({done, ...Promise.reject("Failed to handle")});
+                    await request.outcomeFrom(Promise.reject("Failed to handle"));
                 }
             },
             onLog: (line, isError) => {
diff --git a/src/util.ts b/src/util.ts
index 96ab13dcdc95ea44fad10a8bccf66ba2b7a01034..aca4d651a2eb9780ff8d1a5666b389799edb10db 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -51,10 +51,6 @@ export interface IPatternMap {
     [index: string]: string;
 }
 
-export interface IRequestPromise<T> extends PromiseLike<T> {
-    done(resolve: (msg: T) => {}, reject: (err: Error) => {}): void;
-}
-
 export class Util {
     /**
      * downloadFile - This function will take a URL and store the resulting data into