begin to design the async() hint
implement a simple future.then method
fix future.then so that chaining will actually work