import { Effect, SubscriptionRef, Stream, Fiber, pipe, Schedule } from 'effect';
import * as Schema from '@effect/schema/Schema';
class SomeError extends Schema.TaggedError<SomeError>()('SomeError', {}) {}
const program = Effect.gen(function* (_) {
const fail = pipe(
Effect.sleep(`2 seconds`),
Effect.andThen(() => Effect.fail(new SomeError({})))
);
const forked = yield* _(
fail,
Effect.tapErrorCause(Effect.logError),
Effect.forkScoped
);
yield* _(Effect.sleep(`4 seconds`));
return 'done';
}).pipe(Effect.scoped);
Effect.runPromise(program).then(console.log).catch(console.error);
import { Effect, SubscriptionRef, Stream, Fiber, pipe, Schedule } from 'effect';
import * as Schema from '@effect/schema/Schema';
class SomeError extends Schema.TaggedError<SomeError>()('SomeError', {}) {}
const program = Effect.gen(function* (_) {
const fail = pipe(
Effect.sleep(`2 seconds`),
Effect.andThen(() => Effect.fail(new SomeError({})))
);
const forked = yield* _(
fail,
Effect.tapErrorCause(Effect.logError),
Effect.forkScoped
);
yield* _(Effect.sleep(`4 seconds`));
return 'done';
}).pipe(Effect.scoped);
Effect.runPromise(program).then(console.log).catch(console.error);