BLE gets stuck if peer connection abruptly cuts during discovery (and sometimes packet exchange)

If Tracker is in central mode and tries to connect to a peripheral, while connection is lost midway discovering characteristics or even without a graceful disconnect from peripheral (just losing connection), the BLE.connect() returns true. Using BLE.disconnect(), BLE.disconnectAll(), BLE.off() stalls the current thread and eventually the whole Tracker restarts.