add a customizable Promise dispatcher