Hacker News new | ask | show | jobs
by pharmakom 1726 days ago
Promise<Promise<T>> is collapsed to Promise<T> automatically, which violates monad laws.
1 comments

What’s interesting is this seems to say the exact opposite of what the other direct response says. But I also don’t think this is exactly true.

    Promise.resolve(
      Promise.resolve('foo')
    )
At runtime is Promise<Promise<string>>. It only collapses when chained to then (or await’ed), just as in the sibling comment’s flatMap example.