We discussed with @nacx synchronize close, and did not come to a consensus, I think that should be threadsafe. AtomicReference a good candidate:

```
this.state.compareAndSet(State.OPEN, State.CLOSING);
.....
this.state.set(State.CLOSED);
```