**Error**! Try it: ```js run let user = { name: "John", go: function() { alert(this.name) } } (user.go)() // error! ``` The error message in most browsers does not give us much of a clue about what went wrong. **The error appears because a semicolon is missing after `user = {...}`.** JavaScript does not auto-insert a semicolon before a bracket `(user.go)()`, so it reads the code like: ```js no-beautify let user = { go:... }(user.go)() ``` Then we can also see that such a joint expression is syntactically a call of the object `{ go: ... }` as a function with the argument `(user.go)`. And that also happens on the same line with `let user`, so the `user` object has not yet even been defined, hence the error. If we insert the semicolon, all is fine: ```js run let user = { name: "John", go: function() { alert(this.name) } }*!*;*/!* (user.go)() // John ``` Please note that parentheses around `(user.go)` do nothing here. Usually they setup the order of operations, but here the dot `.` works first anyway, so there's no effect. Only the semicolon thing matters.