Why JavaScript promises aren't technically monads | Hacker News Reader