How would the error attribute of an IOStream ever be an HTTPError?  Why are HTTPErrors treated differently here, being converted into a string and then re-raised as a new HTTPError object?