code: private Single<BluetoothGatt> disconnect(BluetoothGatt bluetoothGatt) {
          return new DisconnectGattObservable(bluetoothGatt, rxBleGattCallback, bluetoothInteractionScheduler)
                  .timeout(timeoutConfiguration.timeout, timeoutConfiguration.timeoutTimeUnit, timeoutConfiguration.timeoutScheduler,
                          Single.just(bluetoothGatt));
      }
docs: TODO: [DS] 09.02.2016 This operation makes the queue to block until disconnection - maybe it would be better if it would not?
  What would happen then if a consecutive call to BluetoothDevice.connectGatt() would be made? What BluetoothGatt would be returned?
  1. A completely fresh BluetoothGatt - would work with the current flow
  2. The same BluetoothGatt - in this situation we should probably cancel the pending BluetoothGatt.close() call