Generalize Promise interfaces