@Override
		public void run() {
		
			final Stack args = new Stack();
			String temp;
			
			if (bytes <= 0) {
				while(script.isLoaded() && (temp = source.readLine()) != null) {
					args.push(SleepUtils.getScalar(temp));
					args.push(SleepUtils.getScalar(source));
					
					function.callClosure("&read", script, args);
				}
			} else {
				StringBuffer tempb = null;
				
				try {
					while(script.isLoaded() && !source.isEOF()) {
						tempb = new StringBuffer(bytes);
						
						for (int x = 0; x < bytes; x++) {
							tempb.append((char) source.getReader().readUnsignedByte());
						}
						
						args.push(SleepUtils.getScalar(tempb.toString()));
						args.push(SleepUtils.getScalar(source));
						
						function.callClosure("&read", script, args);
					}
				} catch (final Exception ex) {
					if (tempb.length() > 0) {
						args.push(SleepUtils.getScalar(tempb.toString()));
						args.push(SleepUtils.getScalar(source));
						
						function.callClosure("&read", script, args);
					}
					
					source.close();
					script.getScriptEnvironment().flagError(ex);
				}
			}
		}