Handling errors in Effect Typescript with `Effect.dieMessage` and `Effect.runPromise`

const program = (data: unknown) =>
    Effect.gen(function*() {
        const input = yield* Schema.decodeUnknown(CancelSubscriptionInputSchema)(
            data,
        );
        const {
            customerId,
            subscriptionId,
            options = {}
        } = input;

        const subscription = yield* retrieveSubscription(subscriptionId);
        yield* validateSubscriptionOwnership(subscription, customerId);
        yield* updateSubscription(subscriptionId, options);

        return {
            status: "success"
            as
            const
        };
    }).pipe(
        Effect.catchTag("ParseError", () => {
            return Effect.dieMessage("Invalid data");
        }),
        Effect.catchAll((e) => {
            return Effect.dieMessage(e.message);
        }),
        Effect.provide(StripeLayer.Default),
    );

My program can fail with "ParseError | RetrieveSubscriptionError | CancelSubscriptionError", which are all unrecoverable, therefore I think i need to Effect.dieMessage(e.message) and at the end I want to Effect.runPromise(program(data)).catch(console.error)

What will get logged to the console? Is this even the best approach
Was this page helpful?