---
# System prepended metadata

title: Extended Promise
tags: [elder blade]

---

###### 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.