Line data Source code
1 : type Resolve<Context, Value> = (ctx: Context, value: Value) => void;
2 : type Reject<Context, Err> = (ctx: Context, err: Err) => void;
3 :
4 : export interface AsyncConsumer<Context, Value> {
5 : resolve(ctx: Context, value: Value): void;
6 : reject(ctx: Context, err: Error): void;
7 : }
8 :
9 1 : export class AsyncConsumerLambdas<Context, Value> implements AsyncConsumer<Context, Value> {
10 1 : constructor(protected resolveFn: Resolve<Context, Value> = () => { }, protected rejectFn: Reject<Context, Error> = () => { }) { }
11 :
12 1 : resolve(ctx: Context, value: Value): void {
13 1 : try {
14 1 : this.resolveFn(ctx, value);
15 1 : } catch (e: any) {
16 1 : console.warn(`AsyncConsumerLambdas::resolveFn threw error: ${e}`);
17 1 : }
18 1 : }
19 0 : reject(ctx: Context, err: Error): void {
20 0 : try {
21 0 : this.rejectFn(ctx, err);
22 0 : } catch (e: any) {
23 0 : console.warn(`AsyncConsumerLambdas::rejectFn threw error: ${e}`);
24 0 : }
25 0 : }
26 1 : }
|