Commit Detail
Commit d501b6d
Patch v8 to support promise cross-context resolution
```
export default {
async fetch(req, env, ctx) {
if (globalThis.resolve === undefined) {
{
const { promise, resolve } = Promise.withResolvers();
setTimeout(resolve, 1000);
ctx.waitUntil(promise);
}
// This is our first request. We will create a new promise and resolver
// pair and store it in a global. This request will then wait for the
// promise to be resolved before continuing.
const { promise, resolve } = Promise.withResolvers();
globalThis.resolve = resolve;
globalThis.promise = promise;
const ab = AbortSignal.abort();
console.log(ab.aborted);
promise.then(() => {
// This will be run within the correct IoContext now...
try {
console.log('test1', ab.aborted);
} catch (err) {
// We would get here if the IoContext was incorrect because
// of the call to ab.aborted
console.log(err.message);
}
});
} else {
// This is our second request. We will resolve the promise created in the
// first request.
console.log('....');
globalThis.resolve();
globalThis.resolve = undefined;
console.log('test2');
}
return new Response("Hello World\n");
}
};
```
Files changed
13 files changed+3 added~10 modified