text: var exec = require("child_process").exec;
  var querystring = require("querystring");
  var fs = require("fs");
  var formidable = require("formidable");
  
  function start(response) {
      console.log("Request handler 'start' was called.");
  
      // function sleep(milliSeconds) {
      //     var startTime = new Date().getTime();
      //     while (new Date().getTime() < startTime + milliSeconds);
      // }
      //
      // sleep(5000);
  
      // exec("find /", { timeout: 10000, maxBuffer: 20000*1024 }, function (error, stdout, stderr) {
      //     content = stdout;
      //     response.writeHead(200, {"Content-Type": "text/plain"});
      //     response.write(content);
      //     response.end();
      // });
  
      var body = '<html>'+
          '<head>'+
          '<meta http-equiv="Content-Type" content="text/html; '+
          'charset=UTF-8" />'+
          '</head>'+
          '<body>'+
          '<form action="/upload" enctype="multipart/form-data" method="post">'+
          // '<form action="/upload" method="post">'+
          // '<textarea name="text" rows="20" cols="60"></textarea>'+
          '<input type="file" name="upload" />'+
          '<input type="submit" value="Upload file" />'+
          '</form>'+
          '</body>'+
          '</html>';
  
      response.writeHead(200, {"Content-Type": "text/html"});
      response.write(body);
      response.end();
  }
  
  function upload(response, request) {
      console.log("Request handler 'upload' was called.");
  
      if (false) {
          var postData = "";
          request.setEncoding("utf8");
          request.addListener("data", function (postDataChunk) {
              postData += postDataChunk;
              console.log("Received post data chunk '" + postDataChunk + "'.")
          });
  
          request.addListener("end", function () {
              response.writeHead(200, {"Content-Type": "text/plain;charset=utf8"});
              response.write("You've received " + querystring.parse(postData).text);
              response.end();
          });
      } else  {
          var form = new formidable.IncomingForm();
          console.log("About to parse.");
          form.parse(request, function (error, fields, files) {
              console.log("parse done.");
              fs.renameSync(files.upload.path, "/tmp/test.png");
              response.writeHead(200, {"Content-Type": "text/html"});
              response.write("Received image: <br />");
              response.write("<img src='/show' />");
              response.end();
          });
      }
  }
  
  function show(response) {
      console.log("Request handler 'show' was called.");
  
      fs.readFile("/tmp/test.png", "binary", function (error, file) {
          if (error) {
              response.writeHead(500, {"Content-Type": "text/plain"});
              response.write(error + "\n");
              response.end();
          } else {
              response.writeHead(200, {"Content-Type": "image/png"});
              response.write(file, "binary");
              response.end();
          }
      })
  }
  
  exports.start = start;
  exports.upload = upload;
  exports.show = show;