diff --git a/app/static/js/cqi/api/client.js b/app/static/js/cqi/api/client.js
index e68dfa968666328f37bff3b6e7275debc7d42292..f3c4171572e27fbe1f41cc2aeda2821d491b801a 100644
--- a/app/static/js/cqi/api/client.js
+++ b/app/static/js/cqi/api/client.js
@@ -2,12 +2,12 @@ cqi.api.APIClient = class APIClient {
   /**
    * @param {string} host
    * @param {string} corpusId
-   * @param {number} [timeout=Infinity] timeout
+   * @param {number} [timeout=60] timeout
    * @param {string} [version=0.1] version
    */
-  constructor(host, corpus_id, timeout = Infinity, version = '0.1') {
+  constructor(host, corpus_id, timeout = 60, version = '0.1') {
     this.host = host;
-    this.timeout = timeout;
+    this.timeout = timeout * 1000;  // convert seconds to milliseconds
     this.version = version;
     this.socket = io(
       this.host,
@@ -26,8 +26,10 @@ cqi.api.APIClient = class APIClient {
    */
   #request(fn_name, fn_args = {}) {
     return new Promise((resolve, reject) => {
-      // TODO: implement this.socket.timeout(this.timeout).emit(...)
-      this.socket.emit('cqi', {fn_name: fn_name, fn_args: fn_args}, (response) => {
+      this.socket.timeout(this.timeout).emit('cqi', {fn_name: fn_name, fn_args: fn_args}, (timeoutError, response) => {
+        if (timeoutError) {
+          reject(timeoutError);
+        }
         if (response.code === 200) {
           resolve(response.payload);
         }
diff --git a/app/static/js/cqi/client.js b/app/static/js/cqi/client.js
index dec54c864dd6cdfa131f3e3f82dd20be976491c0..7a92a90407ccc84a79216bd14574795e55f4fc44 100644
--- a/app/static/js/cqi/client.js
+++ b/app/static/js/cqi/client.js
@@ -2,12 +2,12 @@ cqi.CQiClient = class CQiClient {
   /**
    * @param {string} host
    * @param {string} corpusId
-   * @param {number} [timeout=Infinity] timeout
+   * @param {number} [timeout=60] timeout
    * @param {string} [version=0.1] version
    */
-  constructor(host, corpusId, timeout = Infinity, version = '0.1') {
+  constructor(host, corpusId, timeout = 60, version = '0.1') {
      /** @type {cqi.api.APIClient} */
-    this.api = new cqi.api.APIClient(host, corpusId, version);
+    this.api = new cqi.api.APIClient(host, corpusId, timeout, version);
   }
 
   /**