If you have a grammar like this...
Expr = Expr . `await`
| Place
Place = Id $*Projections
Projections = `.` FieldId
...then a.await will be parsed as a parse error by Place. The reason is that it parses a as an Id (correctly) but when it sees the . it commits to that being followed by a projection. Right now the rule is that we commit if we consumed anything but whitespace. We should let users define the "commit" point.