'Sends a request to a remote webserver using HTTP POST.'

def send(self, url, data, headers):

    req = urllib2.Request(url, headers=headers)
    try:
        response = urlopen(url=req, data=data, timeout=self.timeout, verify_ssl=self.verify_ssl, ca_certs=self.ca_certs)
    except urllib2.HTTPError as exc:
        msg = exc.headers.get('x-sentry-error')
        code = exc.getcode()
        if (code == 429):
            try:
                retry_after = int(exc.headers.get('retry-after'))
            except (ValueError, TypeError):
                retry_after = 0
            raise RateLimited(msg, retry_after)
        elif msg:
            raise APIError(msg, code)
        else:
            raise
    return response
