core.async.flow is particularly well suited to what Rich called "situated programs" in the "Effective Programs" talk https://www.youtube.com/watch?v=2V1FtfBDsLU . These programs execute for long periods of time (often continuously), deal with information, have extensive "memory" (via database connections), and interact with the real world via external I/O channels (these days, often messaging systems like Kafka etc).
You're correct that flow is a poor fit to run in a lambda or in a an RPC style web request path - you are probably better served in writing synchronous code for those scenarios and avoiding the setup and async overhead. But those kinds of processes often feed one or more situated programs via a message queue or database insert.
I would also recommend Rich's "Language of the System" talk which predates flow and core.async(!) by many years but is very much of this idea. https://www.youtube.com/watch?v=ROor6_NGIWU