@Override
	public synchronized void waitForOperation(long timeoutInMillis) {
		if(channel != null) {
			if(e != null)
				throw new RuntimeException(e);
			return;
		}
		
		try {
			if(timeoutInMillis > 0) {
				this.wait(timeoutInMillis);
			} else
				this.wait();
		} catch(InterruptedException e) {
			throw new NioInterruptException(e);
		}
	}