Implement Future.andThen

Applies the side-effecting function to the result of this future, and returns a
new future with the result of this future.

This method allows one to enforce that the callbacks are executed in a
specified order.