We could also change Injection to have `invert(b: B): Either[Throwable, A]`