Just to expand on my previous comment, the magic around this.events and this.pending needs clarifying with comments, as it is difficult to understand in which situations they will kick in and why.