I think the problem is simply that you're trying to assign a try statement to a variable. As far as I'm aware (and I'm no JS expert) you can't do that. It's a statement, not an expression.
I believe this is entirely separate to what happens with return values.
Try putting your try/catch/finally statement into a separate function, and call that instead, assigning the result to r:
function foo() {
try {
throw 1;
} catch(e) {
console.log("Caught: %o", e);
} finally {
return 2;
}
}
var r = foo();
console.log("r=%o", r);
In Chrome's Javascript console, that gives:
Caught: 1
r=2
EDIT: I agree that the term "production" in the docs is a bit confusing here. According to comments, it's technically accurate - but that doesn't stop it from being confusing, of course. I suspect that in most cases "function" would be clearer, probably less definitively accurate.