I have been thinking about splitting this into three methods though, `thenIfGood`, `thenAlways` and `thenIfErrored`, just for fluency