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