When we process a block request from user A -> user B, we remove the follow edges between user A -> user B and user B -> user A, and then add a block edge from user A -> user B.
When we process an unblock request from user A -> user B, we remove the block edge from user A -> user B.
I imagine that the "Aleksey checked that he was following me again" was either client caching, or eventual consistency latency. There's no nightly batch job or anything doing that.
Source: I work on the social graph service at Twitter.
All third party apps (except a single Enterprise tool) do not receive Promoted Tweets. They're only requested and displayed within the Twitter "Owned and Operated" clients.
I described how the logic works above, but we're always subject to and victims of replication or cache-expiration latency. So it could have been that.