JavaScript Closures: Understanding Scope and Privacy | Brian Riant