Trace named Promise callbacks as ordered single-thread replay steps.

Promise Callback Panel

promise_callback.ts
type StepResult = {
    label: string;
    value: number;
};

const base: number = ;
let first: StepResult = { label: "pending", value: 0 };
let second: StepResult = { label: "pending", value: 0 };

function addStep(value: number): StepResult {
    first = { label: "add", value: value + 4 };
    return first;
}

function finishStep(result: StepResult): void {
    second = { label: "double", value: result.value * 2 };
    console.log(`base=${base}`);
    console.log(`${first.label}=${first.value}`);
    console.log(`${second.label}=${second.value}`);
}

Promise.resolve(base)
    .then(addStep)
    .then(finishStep);
type StepResult = {
    label: string;
    value: number;
};

const base: number = ;
let first: StepResult = { label: "pending", value: 0 };
let second: StepResult = { label: "pending", value: 0 };

function addStep(value: number): StepResult {
    first = { label: "add", value: value + 4 };
    return first;
}

function finishStep(result: StepResult): void {
    second = { label: "double", value: result.value * 2 };
    console.log(`base=${base}`);
    console.log(`${first.label}=${first.value}`);
    console.log(`${second.label}=${second.value}`);
}

Promise.resolve(base)
    .then(addStep)
    .then(finishStep);
type StepResult = {
    label: string;
    value: number;
};

const base: number = ;
let first: StepResult = { label: "pending", value: 0 };
let second: StepResult = { label: "pending", value: 0 };

function addStep(value: number): StepResult {
    first = { label: "add", value: value + 4 };
    return first;
}

function finishStep(result: StepResult): void {
    second = { label: "double", value: result.value * 2 };
    console.log(`base=${base}`);
    console.log(`${first.label}=${first.value}`);
    console.log(`${second.label}=${second.value}`);
}

Promise.resolve(base)
    .then(addStep)
    .then(finishStep);
promise callback Named callbacks make each Promise step visible in replay while keeping the sequence deterministic.