###### tags: `elder blade` # Extended Promise We maintain a library called [@braintree/extended-promise](https://www.npmjs.com/package/@braintree/extended-promise). The basic need it's filling is to be able to resolve/reject promises when it's not easy to just wrap the entire thing in a Promise constructor. For instance, in the 3DS component, there are various callbacks and listeners that get set up that ultimately resolved/rejected later on. So we can create an extended promise, save a reference to it, allow whatever method is waiting on it to return that promise, and then manually tell it to resolve/reject, when we know it's ready, based on the listeners/callbacks in the Cardinal SDK.