mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-12 19:10:44 +00:00
26 lines
632 B
TypeScript
26 lines
632 B
TypeScript
import type { ReplyDispatcher } from "./reply/reply-dispatcher.types.js";
|
|
|
|
export async function settleReplyDispatcher(params: {
|
|
dispatcher: ReplyDispatcher;
|
|
onSettled?: () => void | Promise<void>;
|
|
}): Promise<void> {
|
|
params.dispatcher.markComplete();
|
|
try {
|
|
await params.dispatcher.waitForIdle();
|
|
} finally {
|
|
await params.onSettled?.();
|
|
}
|
|
}
|
|
|
|
export async function withReplyDispatcher<T>(params: {
|
|
dispatcher: ReplyDispatcher;
|
|
run: () => Promise<T>;
|
|
onSettled?: () => void | Promise<void>;
|
|
}): Promise<T> {
|
|
try {
|
|
return await params.run();
|
|
} finally {
|
|
await settleReplyDispatcher(params);
|
|
}
|
|
}
|