private Object invoke(RequestType type,Object... params) throws IOException {
  Request req=new Request(type,params);
synchronized (requestList) {
    if (shutdown) {
      throw new ClosedWatchServiceException();
    }
    requestList.add(req);
  }
  wakeup();
  Object result=req.awaitResult();
  if (result instanceof RuntimeException)   throw (RuntimeException)result;
  if (result instanceof IOException)   throw (IOException)result;
  return result;
}

private Object invoke ( RequestType type , Object ... params ) throws IOException { Request req = new Request ( type , params ) ; synchronized ( requestList ) { if ( shutdown ) { throw new ClosedWatchServiceException ( ) ; } requestList . add ( req ) ; } wakeup ( ) ; Object result = req . awaitResult ( ) ; if ( result instanceof RuntimeException ) throw ( RuntimeException ) result ; if ( result instanceof IOException ) throw ( IOException ) result ; return result ; }
enqueues request to poller thread and waits for result
