I agree about not using `html.FileEntry` as they are not compatible (sadly) - but why don't you use `chrome.FileEntry` in the public API instead of `js.Proxy` ?  In your example the first line of the user continuation is always:

    chrome.FileEntry entry = new chrome.FileEntry(file);