refactor: Move HTTPError into its own module