Understanding the Functionality of `Layer.launch` for running Services

What does Layer.launch do exactly? I'm using SqlFx and want my migrations and some other stuff to run when the http server starts. I thought I'd be able to do something like
const serveHttp = Effect.gen(function* (_) {
  yield* _(Layer.launch(Data.Migrator.layer));
  yield* _(Layer.launch(Data.Generator.layer));
  yield* _(Layer.launch(HttpApi.layer));
})

But that hangs on the Migrator. I can just provide the two layers to this effect and it works fine, but is there some other way to just "run" a layer without it "taking over the current fiber" (or whatever it is actually doing)?
Was this page helpful?