throw error objects, not strings