A simple promise class. It supports chaining.