The spec is wrong. The return is 'ok' or {'error', term()}