If a commit fails, we return its error as the error of the function that called it.
It fits the need more naturally.
This makes it easier to deploy the whole thing on FreeBSD
... in a very rough fashion