docs: function WebWorker(source,    // @arg URLString|JavaScriptFragmentString - new Worker(source) or inline worker source
                     callback,  // @arg Function = null - callback(err:Error, body:Any, param:Object):void
                     options) { // @arg Object - { name, origin, import, inline, verbose }
                                // @options.name String = "" - Worker name.
                                // @options.origin URLString = "" - set WorkerGlobalScope.origin.
                                // @options.import URLStringArray = [] - importScripts(...) files.
                                // @options.inline Boolean = false - use inline WebWorker.
                                // @options.verbose Boolean = false - verbose mode.
                                // @desc init Worker session.
  //{@dev
      $valid($type(source,         "String"),        WebWorker, "source");
      $valid($type(callback,       "Function|omit"), WebWorker, "callback");
      $valid($type(options,        "Object|null"),   WebWorker, "options");
      $valid($keys(options,        "name|origin|import|inline|verbose"),
                                                     WebWorker, "options");
      $valid($type(options.name,   "String|omit"),   WebWorker, "options.name");
      $valid($type(options.origin, "String|omit"),   WebWorker, "options.origin");
      $valid($type(options.import, "Array|omit"),    WebWorker, "options.import");
      $valid($type(options.inline, "Boolean|omit"),  WebWorker, "options.inline");
      $valid($type(options.verbose,"Boolean|omit"),  WebWorker, "options.verbose");
  //}@dev
  
      this._source    = source;
      this._callback  = callback || null;
      this._name      = options["name"]    || "";
      this._origin    = options["origin"]  || "";
      this._import    = options["import"]  || [];
      this._inline    = options["inline"]  || "";
      this._verbose   = options["verbose"] || false;
  
  //{@dev
      $valid(WMURL.isValid(this._origin), WebWorker, "options.origin");
      $valid(WMURL.isValid(this._import), WebWorker, "options.import");
  //}@dev
  
      this._on        = {}; // { method: methodCallback, ... }
      this._blobURL   = ""; // blob url for inline worker
      this._worker    = null; // new Worker(source) instance
      this._workerID  = ++_workerID;
      this._requestID = 0;
      this._name      = this._name || this._workerID;
  
      _tickets[this._name] = _tickets[this._name] || {};
  }