[feature] inherit from Promise
closes #1