Opened 5 days ago

Last modified 10 hours ago

#19445 assigned defect

Web service → ProtocolError

Reported by: chimerax-bug-report@… Owned by: Zach Pearson
Priority: normal Milestone:
Component: Web Services Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.26200
ChimeraX Version: 1.11.dev202511220639 (2025-11-22 06:39:57 UTC)
Description
Replace this text with list of actions that caused this problem to occur

Log:
UCSF ChimeraX version: 1.11.dev202511220639 (2025-11-22)  
© 2016-2025 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open C:/Users/zelda/Downloads/PDB_clase/modelo/3GYL.pdb

3GYL.pdb title:  
Structure of prostasin At 1.3 angstroms resolution In complex with A calcium
ion. [more info...]  
  
Chain information for 3GYL.pdb #1  
---  
Chain | Description | UniProt  
B | prostasin | PRSS8_HUMAN 16-262  
  
Non-standard residues in 3GYL.pdb #1  
---  
CA — calcium ion  
GOL — glycerol (glycerin; propane-1,2,3-triol)  
  
94 atoms have alternate locations. Control/examine alternate locations with
Altloc Explorer [start tool...] or the altlocs command.  
1874 atoms have anisotropic B-factors. Depict anisotropic information with
Thermal Ellipsoids [start tool...] or the aniso command.  

> open C:/Users/zelda/Downloads/PDB_clase/modelo/TEST.fasta

Summary of feedback from opening
C:/Users/zelda/Downloads/PDB_clase/modelo/TEST.fasta  
---  
notes | Alignment identifier is TEST.fasta  
Associated 3GYL.pdb chain B to 3GYLB with 0 mismatches  
Showing conservation header ("seq_conservation" residue attribute) for
alignment TEST.fasta  
  
Opened 2 sequences from TEST.fasta  

> ui tool show "Modeller Comparative"

> modeller comparative TEST.fasta:1 numModels 10 fast false multichain true
> hetPreserve false hydrogens false waterPreserve false

Webservices job id: PRR837X6ER5DVT2M  

> ui tool show "Modeller Comparative"

Webservices job finished: PRR837X6ER5DVT2M  
Modeller job (ID PRR837X6ER5DVT2M) finished  
Parameters  
---  
Chain pairing | ss  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker 3GYL.pdb, chain B (#1) with TEST, chain B (#), sequence alignment
score = 322.9  
RMSD between 46 pruned atom pairs is 0.762 angstroms; (across all 229 pairs:
18.600)  
  
Parameters  
---  
Chain pairing | ss  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker 3GYL.pdb, chain B (#1) with TEST, chain B (#), sequence alignment
score = 304.9  
RMSD between 45 pruned atom pairs is 0.830 angstroms; (across all 229 pairs:
18.641)  
  
Parameters  
---  
Chain pairing | ss  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker 3GYL.pdb, chain B (#1) with TEST, chain B (#), sequence alignment
score = 301.9  
RMSD between 47 pruned atom pairs is 0.858 angstroms; (across all 229 pairs:
18.660)  
  
Traceback (most recent call last):  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\urllib3\response.py", line 779, in _error_catcher  
yield  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\urllib3\response.py", line 904, in _raw_read  
data = self._fp_read(amt, read1=read1) if not fp_closed else b""  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\urllib3\response.py", line 887, in _fp_read  
return self._fp.read(amt) if amt is not None else self._fp.read()  
^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\http\client.py",
line 489, in read  
s = self._safe_read(self.length)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\http\client.py",
line 640, in _safe_read  
raise IncompleteRead(data, amt-len(data))  
http.client.IncompleteRead: IncompleteRead(119918 bytes read, 33177 more
expected)  
  
The above exception was the direct cause of the following exception:  
  
Traceback (most recent call last):  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\chimerax\ui\gui.py", line 875, in customEvent  
func(*args, **kw)  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\chimerax\modeller\common.py", line 649, in on_finish  
self.caller.process_ok_models(model_info, get_pdb_model)  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\chimerax\modeller\common.py", line 453, in process_ok_models  
model = get_pdb_model(pdb_name)  
^^^^^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\chimerax\modeller\common.py", line 644, in get_pdb_model  
pdb_text = self.get_file(fname)  
^^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\chimerax\webservices\cxservices_job.py", line 284, in get_file  
content = self.chimerax_api.get_file(self.job_id, filename)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\cxservices\api\default_api.py", line 668, in get_file  
(data) = self.get_file_with_http_info(job_id, file_name, **kwargs) # noqa:
E501  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\cxservices\api\default_api.py", line 748, in get_file_with_http_info  
collection_formats=collection_formats).data  
^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\urllib3\response.py", line 691, in data  
return self.read(cache_content=True)  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\urllib3\response.py", line 980, in read  
data = self._raw_read(amt)  
^^^^^^^^^^^^^^^^^^^  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\urllib3\response.py", line 903, in _raw_read  
with self._error_catcher():  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\contextlib.py",
line 158, in __exit__  
self.gen.throw(typ, value, traceback)  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\urllib3\response.py", line 806, in _error_catcher  
raise ProtocolError(f"Connection broken: {e!r}", e) from e  
urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(119918
bytes read, 33177 more expected)', IncompleteRead(119918 bytes read, 33177
more expected))  
  
urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(119918
bytes read, 33177 more expected)', IncompleteRead(119918 bytes read, 33177
more expected))  
  
File "C:\Program Files\ChimeraX 1.11.dev202511220639\bin\Lib\site-
packages\urllib3\response.py", line 806, in _error_catcher  
raise ProtocolError(f"Connection broken: {e!r}", e) from e  
  
See log for complete Python traceback.  
  




OpenGL version: 3.3.0 Core Profile Context 24.30.58.04.250822
OpenGL renderer: AMD Radeon(TM) Graphics
OpenGL vendor: ATI Technologies Inc.

Python: 3.11.9
Locale: es_MX.cp1252
Qt version: PyQt6 6.9.1, Qt 6.9.0
Qt runtime version: 6.9.2
Qt platform: windows

Manufacturer: LENOVO
Model: 83K7
OS: Microsoft Windows 11 Home Single Language (Build 26200)
Memory: 14,701,584,384
MaxProcessMemory: 137,438,953,344
CPU: 16 AMD Ryzen 7 7735HS with Radeon Graphics
OSLanguage: es-ES

Installed Packages:
    aiohappyeyeballs: 2.6.1
    aiohttp: 3.13.1
    aiosignal: 1.4.0
    alabaster: 1.0.0
    annotated-types: 0.7.0
    anyio: 4.11.0
    appdirs: 1.4.4
    asttokens: 3.0.1
    attrs: 25.4.0
    babel: 2.17.0
    beautifulsoup4: 4.13.5
    blockdiag: 3.0.0
    blosc2: 3.11.1
    build: 1.3.0
    certifi: 2025.11.12
    cftime: 1.6.5
    charset-normalizer: 3.4.4
    ChimeraX-AddCharge: 1.5.20
    ChimeraX-AddH: 2.2.8
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.6.1
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 3.1.1
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Animations: 1.0
    ChimeraX-Aniso: 1.3.2
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.61.4
    ChimeraX-AtomicLibrary: 14.2.1
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.3
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 3.0.0
    ChimeraX-Boltz: 1.1
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.2
    ChimeraX-BuildStructure: 2.13.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.6.0
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.5
    ChimeraX-ChemGroup: 2.0.2
    ChimeraX-Clashes: 2.3
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.8
    ChimeraX-CommandLine: 1.3.0
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.11.dev202511220639
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.5
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.4
    ChimeraX-Dicom: 1.2.7
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.4
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-FileHistory: 1.0.1
    ChimeraX-FunctionKey: 1.0.1
    ChimeraX-Geometry: 1.3
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.4.1
    ChimeraX-Hbonds: 2.5.3
    ChimeraX-Help: 1.3
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.4
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-KVFinder: 1.7.2
    ChimeraX-Label: 1.2
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.2.2
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.2
    ChimeraX-Map: 1.3
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0.1
    ChimeraX-MapFilter: 2.0.1
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1.1
    ChimeraX-Markers: 1.0.1
    ChimeraX-Mask: 1.0.2
    ChimeraX-MatchMaker: 2.2.2
    ChimeraX-MCopy: 1.0
    ChimeraX-MCPServer: 0.1.0
    ChimeraX-MDcrds: 2.17.2
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-Minimize: 1.3.2
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.16
    ChimeraX-MMTF: 2.2
    ChimeraX-ModelArchive: 1.0
    ChimeraX-Modeller: 1.5.22
    ChimeraX-ModelPanel: 1.6
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0.3
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.2
    ChimeraX-MouseModes: 1.2
    ChimeraX-Movie: 1.0.1
    ChimeraX-MutationScores: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.2
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-NRRD: 1.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.15.2
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.11
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.5
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1.4
    ChimeraX-ProfileGrids: 1.4.1
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.6.5
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.3.3
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 4.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.2
    ChimeraX-Scenes: 0.3.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.3
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.5.10
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.17.3
    ChimeraX-Shape: 1.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.2.1
    ChimeraX-ShowSequences: 1.0.3
    ChimeraX-SideView: 1.0.1
    ChimeraX-SimilarStructures: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.19.1
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.2.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.5.2
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.2.3
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.49
    ChimeraX-Umap: 1.0
    ChimeraX-uniprot: 2.3.2
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDock: 1.5.2
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0.1
    ChimeraX-vrml: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0.2
    ChimeraX-WebServices: 1.1.5
    ChimeraX-Zone: 1.0.1
    click: 8.3.1
    colorama: 0.4.6
    comm: 0.2.3
    comtypes: 1.4.11
    contourpy: 1.3.3
    coverage: 7.12.0
    cxservices: 1.2.3
    cycler: 0.12.1
    Cython: 3.1.4
    debugpy: 1.8.17
    decorator: 5.2.1
    docutils: 0.21.2
    executing: 2.2.1
    filelock: 3.19.1
    fonttools: 4.60.1
    frozenlist: 1.8.0
    funcparserlib: 2.0.0a0
    glfw: 2.10.0
    grako: 3.16.5
    h11: 0.16.0
    h5py: 3.15.1
    html2text: 2025.4.15
    httpcore: 1.0.9
    httpx: 0.28.1
    httpx-sse: 0.4.3
    idna: 3.11
    ihm: 2.2
    imagecodecs: 2024.6.1
    imagesize: 1.4.1
    iniconfig: 2.3.0
    ipykernel: 6.30.1
    ipython: 9.5.0
    ipython_pygments_lexers: 1.1.1
    ipywidgets: 8.1.8
    jedi: 0.19.2
    Jinja2: 3.1.6
    jsonschema: 4.25.1
    jsonschema-specifications: 2025.9.1
    jupyter_client: 8.6.3
    jupyter_core: 5.9.1
    jupyterlab_widgets: 3.0.16
    kiwisolver: 1.4.9
    line_profiler: 5.0.0
    lxml: 6.0.2
    lz4: 4.3.2
    Markdown: 3.8.2
    MarkupSafe: 3.0.3
    matplotlib: 3.10.7
    matplotlib-inline: 0.2.1
    mcp: 1.18.0
    msgpack: 1.1.1
    multidict: 6.7.0
    ndindex: 1.10.1
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numexpr: 2.14.1
    numpy: 1.26.4
    nvidia-nvjitlink-cu12: 12.9.86
    OpenMM: 8.2.0
    OpenMM-CUDA-12: 8.2.0
    openvr: 1.26.701
    packaging: 25.0
    ParmEd: 4.2.2
    parso: 0.8.5
    pep517: 0.13.1
    pickleshare: 0.7.5
    pillow: 11.3.0
    pip: 25.2
    pkginfo: 1.12.1.2
    platformdirs: 4.5.0
    pluggy: 1.6.0
    prompt_toolkit: 3.0.52
    propcache: 0.4.1
    psutil: 7.0.0
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pybind11: 3.0.1
    pycollada: 0.8
    pydantic: 2.12.4
    pydantic-settings: 2.12.0
    pydantic_core: 2.41.5
    pydicom: 2.4.4
    Pygments: 2.18.0
    pynmrstar: 3.3.6
    pynrrd: 1.0.0
    PyOpenGL: 3.1.10
    PyOpenGL-accelerate: 3.1.10
    pyopenxr: 1.1.4501
    pyparsing: 3.2.5
    pyproject_hooks: 1.2.0
    PyQt6-commercial: 6.9.1
    PyQt6-Qt6: 6.9.2
    PyQt6-WebEngine-commercial: 6.9.0
    PyQt6-WebEngine-Qt6: 6.9.2
    PyQt6_sip: 13.10.2
    pytest: 9.0.1
    pytest-cov: 7.0.0
    python-dateutil: 2.9.0.post0
    python-dotenv: 1.2.1
    python-multipart: 0.0.20
    pytz: 2025.2
    pywin32: 311
    pyzmq: 27.1.0
    qtconsole: 5.7.0
    QtPy: 2.4.3
    qtshim: 1.2
    RandomWords: 0.4.0
    referencing: 0.37.0
    requests: 2.32.5
    roman-numerals-py: 3.1.0
    rpds-py: 0.29.0
    scipy: 1.14.0
    setuptools: 80.9.0
    sfftk-rw: 0.8.1
    six: 1.17.0
    sniffio: 1.3.1
    snowballstemmer: 3.0.1
    sortedcontainers: 2.4.0
    soupsieve: 2.8
    Sphinx: 8.2.3
    sphinx-autodoc-typehints: 3.2.0
    sphinxcontrib-applehelp: 2.0.0
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 2.0.0
    sphinxcontrib-htmlhelp: 2.1.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 2.0.0
    sphinxcontrib-serializinghtml: 2.0.0
    sse-starlette: 3.0.3
    stack-data: 0.6.3
    starlette: 0.50.0
    superqt: 0.7.6
    tables: 3.10.2
    tcia_utils: 1.5.1
    tifffile: 2025.3.13
    tinyarray: 1.2.5
    tornado: 6.5.2
    traitlets: 5.14.3
    typing-inspection: 0.4.2
    typing_extensions: 4.15.0
    tzdata: 2025.2
    urllib3: 2.5.0
    uvicorn: 0.38.0
    wcwidth: 0.2.14
    webcolors: 24.11.1
    wheel: 0.45.1
    wheel-filename: 1.4.2
    widgetsnbextension: 4.0.15
    WMI: 1.5.1
    yarl: 1.22.0

Change History (1)

comment:1 by Eric Pettersen, 10 hours ago

Component: UnassignedWeb Services
Owner: set to Zach Pearson
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionWeb service → ProtocolError

I'm thinking that either webservices should catch urllib3.exceptions.ProtocolError (it already catches cxservices.ApiError) or cxservices should convert the ProtocolError to an ApiError.

Note: See TracTickets for help on using tickets.