public static AsyncCloseableSupport of() {
        return of(f -> f.complete(null));
    }
Returns a new {@link AsyncCloseableSupport} that will be completed immediately on {@link #close()} or
{@link #closeAsync()}. This method is useful when you don't have any resources to release.
<pre>{@code
> public class MyClass implements ListenableAsyncCloseable {
>     final AsyncCloseableSupport closeable = AsyncCloseableSupport.of();
>
>     public void doSomething() {
>         if (closeable.isClosing()) {
>             throw new IllegalStateException("Closed already");
>         }
>         ...
>     }
>
>     @Override
>     public boolean isClosing() { return closeable.isClosing(); }
>
>     @Override
>     public CompletableFuture<?> whenClosed() { return closeable.whenClosed(); }
>
>     @Override
>     public CompletableFuture<?> closeAsync() { return closeable.closeAsync(); }
>
>     @Override
>     public void close() { closeable.close(); }
> }
}</pre>
core/src/main/java/com/linecorp/armeria/common/util/AsyncCloseableSupport.java