void (ComponentEvent e) { component.removeComponentListener(this); if (!future.isCancelled()) { try { runnable.run(); future.complete(null); } catch (Throwable ex) { future.completeExceptionally(ex); } } }