Since resolving a promise looks for a thenable and accessing the then property on a cross domain WindowProxy throws you can't do something like:
const loadFrame = (src) => new Promise((resolve) => {
frame.src = src;
frame.onload = () => resolve(frame.contentWindow);
});
Perhaps cross domain WindowProxy objects should allow accessing then and have it always be undefined?