Ported the Pusher class.

The Pusher was ported from the latest upstream changes.