Added a promise arguments to constructor

This will allow us to use different promise
implementation.