I think you are right about this. I agree that ```store.New``` should always return a session object and worst case an empty session object. The ```sessionInfo``` object works well for saving the error allowing client code to retry ```store.New``` at a future date if that is an option.
Maybe all that's needed is to document the API to say ```store.New``` should always return a session object, even just an empty one if all else fails. I am going to change my client code to do just that.