Implement Promise::then()