message: make sure get is in the driver
diff: @@ -205,12 +205,15 @@ export type MergeA<Ls extends SyncLayer<any, any, any>[]> = UnionToIntersection<
  export type SyncMemoMap = Map<symbol, any>
  export function getMemoOrElseCreate<R, E, A>(layer: SyncLayer<R, E, A>) {
  - return (m: SyncMemoMap): Sy.Sync<R, E, A> => {
  - const inMap = m.get(layer.hash.get)
  + return (m: SyncMemoMap): Sy.Sync<R, E, A> =>
  + Sy.gen(function* (_) {
  + const inMap = yield* _(Sy.sync(() => m.get(layer.hash.get)))
  +
  if (inMap) {
  - return Sy.succeed(inMap)
  + return yield* _(Sy.succeed(inMap))
  } else {
  - return Sy.gen(function* (_) {
  + return yield* _(
  + Sy.gen(function* (_) {
  const f = yield* _(layer.scope())
  const a = yield* _(f(m))
  yield* _(
  @@ -220,8 +223,9 @@ export function getMemoOrElseCreate<R, E, A>(layer: SyncLayer<R, E, A>) {
  )
  return a
  })
  + )
  }
  - }
  + })
  }
  export function fromRawSync<R, E, T>(_: Sy.Sync<R, E, T>): SyncLayer<R, E, T> {
  