make `then()` more chainable