private void doCreate() throws IOException {
      System.setProperty(GEMFIRE_PREFIX + "bridge.disableShufflingOfEndpoints", "true");

      Properties clientProperties = getDistributedSystemProperties();
      clientProperties.setProperty(LOCATORS, "");
      clientProperties.setProperty(CONFLATE_EVENTS, clientConflation);

      create(new ClientCacheFactory(clientProperties));

      PoolFactory poolFactory = PoolManager.createFactory();
      for (int port : serverPorts) {
        poolFactory.addServer("localhost", port);
      }

      Pool pool = poolFactory
          .setMinConnections(2 * serverPorts.length)
          .setPingInterval(1000)
          .setIdleTimeout(250)
          .setSubscriptionEnabled(true)
          .setSubscriptionRedundancy(subscriptionRedundancy)
          .setSubscriptionAckInterval(1)
          .create(getName() + "_pool");

      ClientRegionFactory<String, Object> regionFactory =
          getClientCache().createClientRegionFactory(ClientRegionShortcut.LOCAL);

      regionFactory.setPoolName(pool.getName());

      if (cacheListener != null) {
        regionFactory.addCacheListener(cacheListener);
      }
      if (evictionAttributes != null) {
        regionFactory.setEvictionAttributes(evictionAttributes);
      }
      if (evictionAttributes != null && evictionAttributes.getAction().isOverflowToDisk()) {
        // create diskstore with overflow dir
        // since it's overflow, no need to recover, so we can use random number as dir name
        File overflowDir = temporaryFolder.newFolder("overflow_" + getVMId());

        DiskStore diskStore = getClientCache().createDiskStoreFactory()
            .setDiskDirs(new File[] {overflowDir})
            .create("client_overflow_ds");

        regionFactory.setDiskStoreName(diskStore.getName());
      }

      regionFactory.setConcurrencyChecksEnabled(false);

      regionFactory.create(regionName);
    }
<pre>
1. Create a cache server with slow dispatcher
2. Start a durable client with a custom cache listener which shuts itself down as soon as it
   receives a marker message.
3. Do some puts on the server region
4. Let the dispatcher start dispatching
5. Verify that durable client is disconnected as soon as it processes the marker. Server will
   retain its queue which has some events (containing deltas) in it.
6. Restart the durable client without the self-destructing listener.
7. Wait till the durable client processes all its events.
8. Verify that no deltas are received by it.
</pre>
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/DeltaPropagationDUnitTest.java