private function performRequest($curlSession, $deserializationType = null)
    {
        $response = curl_exec($curlSession);
        // coerce all false values to null
        $response = $response ? $response : null;
        try {
            $result = new MaileonAPIResult($response, $curlSession, $this->throwException, $deserializationType);
            $this->printDebugInformation($curlSession, $result);
            curl_close($curlSession);
            return $result;
        } catch (MaileonAPIException $e) {
            if ($this->debug) {
                $this->printDebugInformation($curlSession, null, $this->throwException ? null : $e);
            }
            curl_close($curlSession);
            if ($this->throwException) {
                throw $e;
            }
            return null;
        }
    }