diff --git a/IPython/html/static/services/kernels/comm.js b/IPython/html/static/services/kernels/comm.js
index 1e7335003..6cdce036a 100644
--- a/IPython/html/static/services/kernels/comm.js
+++ b/IPython/html/static/services/kernels/comm.js
@@ -51,7 +51,7 @@ define([
CommManager.prototype.register_comm = function (comm) {
// Register a comm in the mapping
- this.comms[comm.comm_id] = new Promise(function(resolve) {resolve(comm);});
+ this.comms[comm.comm_id] = Promise.resolve(comm);
comm.kernel = this.kernel;
return comm.comm_id;
};
@@ -74,7 +74,10 @@ define([
var comm = new Comm(content.target_name, comm_id);
comm.kernel = that.kernel;
try {
- target(comm, msg);
+ var response = target(comm, msg);
+ if (response instanceof Promise) {
+ return response.then(function() { Promise.resolve(comm); });
+ }
} catch (e) {
comm.close();
that.unregister_comm(comm);
@@ -82,7 +85,7 @@ define([
console.error(wrapped_error);
return Promise.reject(wrapped_error);
}
- return comm;
+ return Promise.resolve(comm);
}, utils.reject('Could not open comm', true));
return this.comms[comm_id];
};