title: OnConnectionStateChange not called after disconnecting device
body: <p>I'm facing a problem when I disable bluetooth from parameter. 
  I use a Broadcast Receiver to listen this action and when its state is turned off I call a method to disconnect my peripheral. 
  In my log I only see <code>D/BluetoothGatt: cancelOpen()</code> but according to <code>BluetoothGatt.class</code> the service calls our <code>BluetoothGattCallback</code> in <code>disconnect</code> method with <code>onConnectionStateChanged</code> turns to <code>DEVICE_DISCONNECTED</code> and I have nothing after 20 or 30 seconds too (supervisor timeout).</p>
  
  <p>When I want to disconnect my device directly with my inner method it works correctly.</p>
  
  <p>This is the disconnect method:</p>
  
  <pre><code>   /**
       * Disconnects an established connection, or cancels a connection attempt
       * currently in progress.
       *
       * &lt;p&gt;Requires {@link android.Manifest.permission#BLUETOOTH} permission.
       */
      public void disconnect() {
          if (DBG) Log.d(TAG, "cancelOpen() - device: " + mDevice.getAddress());
          if (mService == null || mClientIf == 0) return;
  
          try {
              mService.clientDisconnect(mClientIf, mDevice.getAddress());
          } catch (RemoteException e) {
              Log.e(TAG,"",e);
          }
      }
  </code></pre>
  
  <p>I checked with reflection if mClientIf equals 0 or if mService is Null but he goes to the next step and enter in the try/catch. So I don't understand the Android behavior here</p>