Promise removed from roles, use @context.promise instead.
Context now throws exception if using a reserved property name.
Some variables renamed for clarity.