diff --git a/lib/base.js b/lib/base.js
index <HASH>..<HASH> 100644
--- a/lib/base.js
+++ b/lib/base.js
@@ -51,8 +51,8 @@ class TeamspeakQuery extends EventEmitter {
    */
   disconnect() {
     return new Promise((resolve, reject) => {
-      while(this.queue.length)
-        this.queue.pop();
+      const error = new Error('TeamspeakQuery.disconnect was called');
+      this.rejectPending(error, true);
 
       this.queue.unshift({ cmd: 'quit', resolve, reject });
       this.checkQueue();
@@ -62,6 +62,27 @@ class TeamspeakQuery extends EventEmitter {
   }
 
   /**
+   * Reject all pending commands. This can be useful for when an error occurs
+   * in a stream and it should be propagated.
+   *
+   * @param      {any}      reason          Gets passed onto Promise.reject for the
+                                            respective command
+   * @param      {boolean}  includeCurrent  Whether to also reject the command,
+   *                                        which is currently waiting for a response.
+   */
+  rejectPending(reason, includeCurrent) {
+      if (includeCurrent && this._current) {
+        this._current.reject(reason);
+      }
+
+      while(this.queue.length) {
+        let item = this.queue.pop();
+
+        item.reject(reason);
+      }
+  }
+
+  /**
    * Clean up any resources that might live on after the connection
    * was closed.
    */
Add TeamspeakQuery.rejectPending/2 method

Calling this function will reject all pending commands with the given reason. This might be useful for TeamspeakQuery.Custom