def METHOD_NAME(
    self,
    url: str,
    params: Optional[Dict[str, str]] = None,
    data: Optional[RequestData] = None,
    headers: Optional[Dict[str, str]] = None,
    **kwargs: Any
) -> MsalResponse:
    # pylint:disable=unused-argument
    request = HttpRequest("POST", url, headers=headers)
    if params:
        request.format_parameters(params)
    if data:
        if isinstance(data, dict):
            request.headers["Content-Type"] = "application/x-www-form-urlencoded"
            request.set_formdata_body(data)
        elif isinstance(data, str):
            body_bytes = data.encode("utf-8")
            request.set_bytes_body(body_bytes)
        else:
            raise ValueError('expected "data" to be text or a dict')
    response = self._pipeline.run(request, stream=False, retry_on_methods=_POST)
    self._store_auth_error(response)
    return MsalResponse(response)