code: function submit(form_id) {
          var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
          var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'POST';
          var headers = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { 'X-Requested-With': 'XMLHttpRequest' };
  
          this._checkInit(form_id);
          var request = new XMLHttpRequest();
          if (url === null) {
              if (document.forms[form_id].hasAttribute('action')) {
                  url = document.forms[form_id].getAttribute('action');
              } else {
                  //throw new Error('Form.submit() is missing 2nd URL argument');
                  url = '';
              }
          }
          request.open(method, url);
          var p = new Promise(function (success, fail) {
              request.onload = function () {
                  if (request.status === 200) {
                      success(request.responseText);
                  } else {
                      fail(request);
                  }
              };
          });
          for (var header in headers) {
              request.setRequestHeader(header, headers[header]);
          }
          this._collection[form_id].set('categories', [2, 3]);
          request.send(this.getFormDataObject(form_id));
          return p;
      }
docs: /*
  submit methods