Catching exceptions binding to port

This simplifies the validation (no longer mixing synchronous
and asynchronous validations), removes a race condition (something
else could still grab the port after the validation succeeds),
and simplifies the code.