Skip to content

Commit 07f455e

Browse files
committed
Update and test promise detection
1 parent 3d76848 commit 07f455e

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

html_rewriter.js.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@
200200
module.exports.__wbg_instanceof_Promise_c6535fc791fcc4d2 = function(arg0) {
201201
- var ret = getObject(arg0) instanceof Promise;
202202
+ var obj = getObject(arg0);
203-
+ var ret = (obj instanceof Promise) || (typeof obj === "object" && typeof obj.then === "function");
203+
+ var ret = (obj instanceof Promise) || (Object.prototype.toString.call(obj) === '[object Promise]');
204204
return ret;
205205
};
206206

test/misc.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { TextEncoder, TextDecoder } from "util";
2+
import vm from "vm";
23
import test from "ava";
34
import { HTMLRewriter as RawHTMLRewriter } from "..";
45
import { HTMLRewriter, wait } from ".";
@@ -137,3 +138,18 @@ test("rewriter allows chaining", (t) => {
137138
t.is(rewriter.on("p", {}), rewriter);
138139
t.is(rewriter.onDocument({}), rewriter);
139140
});
141+
142+
test.serial("handles async handler in different realm", async (t) => {
143+
const context = vm.createContext({HTMLRewriter, wait});
144+
const res = await vm.runInContext(`
145+
const rewriter = new HTMLRewriter();
146+
rewriter.on("p", {
147+
async element(element) {
148+
await wait(50);
149+
element.setInnerContent("new");
150+
},
151+
});
152+
rewriter.transform("<p>old</p>");
153+
`, context);
154+
t.is(res, "<p>new</p>");
155+
});

0 commit comments

Comments
 (0)