code: function DoIt(body, ignore) {
      this.recover();
  
      if (arguments.length === 1) {
          if (body !== undefined && body !== null && (typeof body === "boolean" || body.constructor === Boolean)) {
              this.$ignoreError = body;
              body = null;
          } else {
              this.then(body);
          }
      } else if (arguments.length === 2) {
          this.$ignoreError = ignore;
          this.then(body);
      }
  }
docs: Promise-like sequential tasks runner (D-then). Allows developers to execute
  number of steps (async and sync) in the exact order they have been called with
  the class instance. The idea of the runner implementation is making the
  code more readable and plain nevertheless it includes asynchronous parts:
  @example
  
  var r = new zebkit.DoIt();
  
  // step 1
  r.then(function() {
  // call three asynchronous HTTP GET requests to read three files
  // pass join to every async. method to be notified when the async.
  // part is completed
  asyncHttpCall("http://test.com/a.txt", this.join());
  asyncHttpCall("http://test.com/b.txt", this.join());
  asyncHttpCall("http://test.com/c.txt", this.join());
  })
  .  // step 2
  then(function(r1, r2, r3) {
  // handle completely read on previous step files
  r1.responseText  // "a.txt" file content
  r2.responseText  // "b.txt" file content
  r3.responseText  // "c.txt" file content
  })
  . // handle error
  catch(function(e) {
  // called when an exception has occurred
  ...
  });
  
  
  @class zebkit.DoIt
  @param {Boolean} [ignore] flag to rule error ignorance
  @constructor