each test uses different port to avoid ECONNREFUSED race condition