Skip to content

Commit ea4731d

Browse files
authored
Merge pull request #135 from reesericci/patch-1
Add async/await & promise support to Bun runner
2 parents 45043f1 + 3ab72a6 commit ea4731d

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

lib/execjs/support/bun_runner.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
(function(program, execJS) { (function() {execJS(program) }).call({}); })(function(self, global, process, module, exports, require, console, setTimeout, setInterval, clearTimeout, clearInterval, setImmediate, clearImmediate) { #{source}
2-
}, function(program) {
1+
(function(program, execJS) { (function() {execJS(program) }).call({}); })(async function(self, global, process, module, exports, require, console, setTimeout, setInterval, clearTimeout, clearInterval, setImmediate, clearImmediate) { #{source}
2+
}, async function(program) {
33
// Force BunJS to use sloppy mode see https://github.com/oven-sh/bun/issues/4527#issuecomment-1709520894
44
exports.abc = function(){}
55
var __process__ = process;
@@ -11,7 +11,7 @@
1111
try {
1212
delete this.process;
1313
delete this.console;
14-
result = program();
14+
result = await program();
1515
process = __process__;
1616
if (typeof result == 'undefined' && result !== null) {
1717
printFinal('["ok"]');

test/test_execjs.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,15 @@ def test_uglify
450450
context.call("uglify", "function foo(bar) {\n return bar;\n}")
451451
end
452452

453+
def test_async_bun
454+
skip unless ENV["EXECJS_RUNTIME"] == "Bun"
455+
source = <<-JS
456+
async function testAsync() { return (await new Promise((resolve) => { resolve("it works!") } )) }
457+
JS
458+
context = ExecJS.compile(source)
459+
assert_equal "it works!", context.call("testAsync")
460+
end
461+
453462
private
454463

455464
def assert_output(expected, actual)

0 commit comments

Comments
 (0)