we also need to catch BSON::InvalidKeyName and BSON::InvalidStringEncoding so would it be better to list all three or keep it at BSONError?