withStartToCloseTimeout(5) ); $a = Workflow::newCancellationScope(function () use ($simple, $input) { return yield $simple->echo($input); }); $b = Workflow::newCancellationScope(function () use ($simple, $input) { return yield $simple->lower($input); }); [$ra, $rb] = yield Promise::all([$a, $b]); return sprintf('%s|%s|%s', $ra, $input, $rb); } }