code: @Override
  	public void start(
  		Callback<? super Socket> onStart,
  		Callback<? super Exception> onError
  	) throws IllegalStateException {
  		if(isClosed()) throw new IllegalStateException("Socket is closed");
  		startImpl(onStart, onError);
  	}
docs: Makes sure the socket is not already closed then calls startImpl.
  
  @see  #startImpl(com.aoindustries.util.concurrent.Callback, com.aoindustries.util.concurrent.Callback)