Crank: JSX-driven components with functions, promises and generators | Hacker News Reader