Index: remoting/webapp/base/js/base.js |
diff --git a/remoting/webapp/base/js/base.js b/remoting/webapp/base/js/base.js |
index 8111174821a0ccff799d31e22cf87a07d7bca28c..86c91565bb9f1907eaa792dbafeb4dcb5f0e187f 100644 |
--- a/remoting/webapp/base/js/base.js |
+++ b/remoting/webapp/base/js/base.js |
@@ -270,6 +270,29 @@ base.Promise.negate = function(promise) { |
}; |
/** |
+ * Converts a |method| with callbacks into a Promise. |
+ * |
+ * @param {Function} method |
+ * @param {Array} params |
+ * @param {*=} opt_context |
+ * @param {boolean=} opt_hasErrorHandler whether the method has an error handler |
+ * @return {Promise} |
+ */ |
+base.Promise.as = function(method, params, opt_context, opt_hasErrorHandler) { |
+ return new Promise(function(resolve, reject) { |
+ params.push(resolve); |
+ if (opt_hasErrorHandler) { |
+ params.push(reject); |
+ } |
+ try { |
+ method.apply(opt_context, params); |
+ } catch (/** @type {*} */ e) { |
+ reject(e); |
+ } |
+ }); |
+}; |
+ |
+/** |
* A mixin for classes with events. |
* |
* For example, to create an alarm event for SmokeDetector: |