In at least 2018.2 and possibly other versions there appears to be an undocumented bug that readback requests mess with the command buffer:
presentDrawable which results in the screen not being updated, and the behavior differs between devices:
The workaround is to move the readback request to the beginning of the next frame.
The cause is unknown, it does not appear to be detectable beforehand. All AsyncGPUReadbackRequest properties indicate that it's a valid completed request. It seems to be safe to catch and ignore this exception.