As the title says, the handling of BS errors was incorrect. Only first (TimeOut) and the last (Limit) were actually counted in client code.
Tagging @tsuno @sutt @nagano (presumably I fixed legacy code, but I feared that we may be cloning it).