don't cache _errors, so reading it prematurely doesn't silence future errors