I'm probably going to regret this, but this post is about promises. There are a few details that I'd like to spell out so I can point people to this post instead of repeating myself. First, let's talk about try/catch. The problem with exception handling in JavaScript is that it's too aggressive. Consider the following code: try { var result = foo(getValue()); } catch(e) { // handle error from `foo