public function submit ($failIfNot200 = null) {
    if ($this->wasSubmitted()) {
      throw new Exception("Request be reused!");
    }
    $ch = $this->createCurlRequest();
    $raw = curl_exec($ch);
    $this->processCurlResponse($ch, curl_errno($ch), curl_error($ch), $raw);
    $this->validateResponse($failIfNot200);
    return $this;
  }