diff --git a/IPython/html/static/services/kernels/comm.js b/IPython/html/static/services/kernels/comm.js
index adf748c..7a9787c 100644
--- a/IPython/html/static/services/kernels/comm.js
+++ b/IPython/html/static/services/kernels/comm.js
@@ -120,6 +120,11 @@ define([
this.target_name = target_name;
this.comm_id = comm_id || utils.uuid();
this._msg_callback = this._close_callback = null;
+
+ var that = this;
+ this.msg_promise = new Promise(function(resolve, reject) {
+ that.resolve_msg_promise = resolve;
+ });
};
// methods for sending messages
@@ -155,6 +160,7 @@ define([
Comm.prototype.on_msg = function (callback) {
this._register_callback('msg', callback);
+ this.resolve_msg_promise();
};
Comm.prototype.on_close = function (callback) {
@@ -175,7 +181,10 @@ define([
};
Comm.prototype.handle_msg = function (msg) {
- this._maybe_callback('msg', msg);
+ var that = this;
+ this.msg_promise.then(function() {
+ that._maybe_callback('msg', msg);
+ });
};
Comm.prototype.handle_close = function (msg) {