I actually started LazyPromise without knowing much about Effect (
https://www.effect.website/), coming from the world of RxJS and Solid-style signals (my post from last year:
https://news.ycombinator.com/item?id=46321852). But Effect is a lazy promise too, and showed how useful generator syntax, type-safe errors and dependency injection can be. So there you go: a version of promise with auto-propagating cancellation and Effect-style features, but essentially the same API as the native promise.