Вы должны иметь свой обработчик implement the get() trap и вернуть версию prom.then
var prom = new Promise(function(resolve, reject){resolve(42)});
var promProxy = new Proxy(prom, {
get: function(target, prop) {
if (prop === 'then') {
return target.then.bind(target);
}
}
});
promProxy.then(function(response){console.log(response)});
Обратите внимание на связаны, что если вы просто хотите, чтобы прокси все аксессоров, функция get
будет выглядеть следующим образом:
var promProxy = new Proxy(prom, {
get: function(target, prop) {
var value = target[prop];
return typeof value == 'function' ? value.bind(target) : value;
}
});
bind
будет гарантировать, что функция не будет неправильно вызвана, когда вы имеете дело с Na таких как обещания или консоль.
EDIT: В некоторых случаях браузеры/узлы будут иметь устаревшую версию прокси, и в этом случае вы захотите использовать harmony-reflect, чтобы обновить ее.
* Почему вы пытаетесь это сделать? Действительно, доверенное лицо для обещания не является самородным объектом обещания. Может быть, вы искали подклассы? – Bergi