Fix _driveAsync to handle dict-format IO requests from callFn path
The callFn suspension returns requests as {op: "io-sleep", args: {items: [100]}}
(dict format) but _driveAsync only handled list format (op-name arg ...).
Result: io-sleep/wait resumes never fired — tests hung after first suspension.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -89,10 +89,17 @@
|
|||||||
window._driveAsync = function driveAsync(result) {
|
window._driveAsync = function driveAsync(result) {
|
||||||
if (!result || !result.suspended) return;
|
if (!result || !result.suspended) return;
|
||||||
var req = result.request;
|
var req = result.request;
|
||||||
var items = req && (req.items || req);
|
// Request can be dict {op, args} or list (op-name arg ...)
|
||||||
var op = items && items[0];
|
var opName, arg;
|
||||||
var opName = typeof op === "string" ? op : (op && op.name) || String(op);
|
if (req && req._type === "dict" && req.op) {
|
||||||
var arg = items && items[1];
|
opName = req.op;
|
||||||
|
arg = req.args && req.args.items ? req.args.items[0] : null;
|
||||||
|
} else {
|
||||||
|
var items = req && (req.items || req);
|
||||||
|
var op = items && items[0];
|
||||||
|
opName = typeof op === "string" ? op : (op && op.name) || String(op);
|
||||||
|
arg = items && items[1];
|
||||||
|
}
|
||||||
if (opName === "io-sleep" || opName === "wait") {
|
if (opName === "io-sleep" || opName === "wait") {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
try { driveAsync(result.resume(null)); } catch(e) { console.error("[sx] driveAsync:", e.message); }
|
try { driveAsync(result.resume(null)); } catch(e) { console.error("[sx] driveAsync:", e.message); }
|
||||||
|
|||||||
Reference in New Issue
Block a user