Open mlejva opened 3 hours ago
When running JS code in the Sandbox, the top level promise is never awaited:
import { Sandbox } from '@e2b/code-interpreter' const sandbox = await Sandbox.create({apiKey: 'e2b_5d31a239f59f4a7bb8b1c69cf359098c94448aaa'}) const code = ` const printResult = async () => { return 'foo'; }; printResult() .then((result) => { console.log("glama.result"); }) .catch((error) => { console.log("glama.error"); }); ` console.log('running code') const ex = await sandbox.runCode(code, { language: 'js', onError: (error) => { console.log('error', error) }, onStdout: (stdout) => { console.log('stdout', stdout) }, onStderr: (stderr) => { console.log('stderr', stderr) }, }) console.log('code executed', ex)
The code above will produce a following output
running code code executed Execution { results: [ Result { isMainResult: true, text: 'Promise { <pending> }', html: undefined, markdown: undefined, svg: undefined, png: undefined, jpeg: undefined, pdf: undefined, latex: undefined, json: undefined, javascript: undefined, raw: [Object], data: undefined, chart: undefined, extra: {} } ], logs: { stdout: [], stderr: [] }, error: undefined, executionCount: 2 }
The text field says 'Promise { <pending> }' which means the promise was never awaited.
text
'Promise { <pending> }'
E2B-1095 Top level async/await doesn't work in JavaScript runtime
When running JS code in the Sandbox, the top level promise is never awaited:
The code above will produce a following output
The
text
field says'Promise { <pending> }'
which means the promise was never awaited.