Create an interface for deferred. Create a utility abtract Promise to facilitate promise creation. Fix a NPE in callbacks