@Test public void shutdownLaterDefers() { HttpResources oldHttpResources = HttpResources.httpResources.getAndSet(testResources); HttpResources newHttpResources = HttpResources.httpResources.get(); try { assertThat(newHttpResources).isSameAs(testResources); HttpResources.disposeLoopsAndConnectionsLater(); assertThat(newHttpResources.isDisposed()).isFalse(); HttpResources.disposeLoopsAndConnectionsLater().block(); assertThat(newHttpResources.isDisposed()).as("disposeLoopsAndConnectionsLater completion").isTrue(); assertThat(HttpResources.httpResources.get()).isNull(); } finally { if (oldHttpResources != null && !HttpResources.httpResources.compareAndSet(null, oldHttpResources)) { oldHttpResources.dispose(); } } }