@suissa/universal-queues
Version:
Factory universal para mensageria (RabbitMQ, Kafka, SQS) para sistemas distribuĂdos.
17 lines (15 loc) • 506 B
text/typescript
export class TimeoutError extends Error {
constructor(msg = 'Operation timed out') {
super(msg);
this.name = 'TimeoutError';
}
}
export function withTimeout<T>(p: Promise<T>, ms: number, label = 'op'): Promise<T> {
return new Promise<T>((resolve, reject) => {
const t = setTimeout(() => reject(new TimeoutError(`${label} timeout after ${ms}ms`)), ms);
p.then(
(v) => { clearTimeout(t); resolve(v); },
(e) => { clearTimeout(t); reject(e); }
);
});
}