Inc increments the counter and calls the init function,
if this is the first reference. The call returns an
error only if init call has failed, and the reference
has not been incremented.
IncErr is identical to Inc, with the only difference that if the
function fails, the error is returned on any further IncErr call,
preventing from calling the faulty initialization function again.