Typed Error Handling
Problem
Retry, load shedding, and shutdown require different worker failure handling.
Solution
Branch on Familiar's typed errors.
ts
import {
FamiliarQueueFullError,
FamiliarTaskError,
FamiliarTimeoutError,
} from '@vielzeug/familiar';
function handleWorkerError(error: unknown): void {
if (error instanceof FamiliarTimeoutError) console.log('retry later');
else if (error instanceof FamiliarQueueFullError) console.log('shed load');
else if (error instanceof FamiliarTaskError) throw error.cause;
else throw error;
}
try {
throw new FamiliarTimeoutError(500);
} catch (error) {
handleWorkerError(error);
}Pitfalls
AbortErrorrepresents caller cancellation, not Familiar failure.FamiliarTaskError.causecarries worker handler failure.