Support virtually any promise that responds to then()