fix: 修复所有 abort() 不传 reason 导致的'signal is aborted without reason'提示

为 llm.js/embedding.js/vector-index.js/index.js 中所有
controller.abort() 添加具体原因:
- 超时: 'LLM 请求超时 (60s)' / 'Embedding 请求超时 (45s)'
- 信号传递: 转发原始 signal.reason
This commit is contained in:
Youzini-afk
2026-03-25 15:22:56 +08:00
parent 2e224faa61
commit 02fdac48e8
4 changed files with 11 additions and 11 deletions

View File

@@ -32,17 +32,17 @@ function createCombinedAbortSignal(...signals) {
const controller = new AbortController();
for (const signal of validSignals) {
if (signal.aborted) {
controller.abort();
controller.abort(signal.reason);
return controller.signal;
}
signal.addEventListener('abort', () => controller.abort(), { once: true });
signal.addEventListener('abort', () => controller.abort(signal.reason), { once: true });
}
return controller.signal;
}
async function fetchWithTimeout(url, options = {}, timeoutMs = EMBEDDING_REQUEST_TIMEOUT_MS) {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), timeoutMs);
const timeout = setTimeout(() => controller.abort(new DOMException(`Embedding 请求超时 (${Math.round(timeoutMs / 1000)}s)`, 'AbortError')), timeoutMs);
const signal = options.signal
? createCombinedAbortSignal(options.signal, controller.signal)
: controller.signal;