I was kind of wondering why `reportError` needs to take strings? Taking `Error` instances would be nicer IMO.