MCPcopy
hub / github.com/Effect-TS/effect / unsafeAsync

Function unsafeAsync

packages/effect/src/internal/core.ts:489–502  ·  view source on GitHub ↗
(
  register: (
    callback: (_: Effect.Effect<A, E, R>) => void
  ) => void | Effect.Effect<void, never, R>,
  blockingOn: FiberId.FiberId = FiberId.none
)

Source from the content-addressed store, hash-verified

487
488/* @internal */
489export const unsafeAsync = <A, E = never, R = never>(
490 register: (
491 callback: (_: Effect.Effect<A, E, R>) => void
492 ) => void | Effect.Effect<void, never, R>,
493 blockingOn: FiberId.FiberId = FiberId.none
494): Effect.Effect<A, E, R> => {
495 const effect = new EffectPrimitive(OpCodes.OP_ASYNC) as any
496 let cancelerRef: Effect.Effect<void, never, R> | void = undefined
497 effect.effect_instruction_i0 = (resume: (_: Effect.Effect<A, E, R>) => void) => {
498 cancelerRef = register(resume)
499 }
500 effect.effect_instruction_i1 = blockingOn
501 return onInterrupt(effect, (_) => isEffect(cancelerRef) ? cancelerRef : void_)
502}
503
504/* @internal */
505export const asyncInterrupt = <A, E = never, R = never>(

Callers 2

asyncInterruptFunction · 0.85
core.tsFile · 0.85

Calls 2

isEffectFunction · 0.85
registerFunction · 0.70

Tested by

no test coverage detected