With the way this is written now, `statePrompter.init` can be called multiple times, but every object returned from each call would use the options passed to the _last_ call to `init`

You should move the module level variables inside the `init` function, as well as nest `canProceed`, `unlock`, and `lock` inside `init`.