private static void setAutoConnectValue(BluetoothGatt bluetoothGatt, boolean autoConnect)
            throws NoSuchFieldException, IllegalAccessException {
        Field autoConnectField = bluetoothGatt.getClass().getDeclaredField("mAutoConnect");
        autoConnectField.setAccessible(true);
        autoConnectField.setBoolean(bluetoothGatt, autoConnect);
    }
Some implementations of Bluetooth Stack have a race condition where autoConnect flag
is not properly set before calling connectGatt. That's the reason for using reflection
to set the flag manually.
rxandroidble/src/main/java/com/polidea/rxandroidble2/internal/util/BleConnectionCompat.java