docs: async def _get_security_token(self) -> None:
          """Request a security token."""
          _LOGGER.debug('Requesting security token.')
          if self._credentials is None:
              return
  
          # Make sure only 1 request can be sent at a time.
          async with self._security_token_lock:
              # Confirm there is still no security token.
              if self._security_token is None:
                  login_resp = await self._request(
                      'post',
                      LOGIN_ENDPOINT,
                      json=self._credentials,
                      login_request=True,
                  )
  
                  return_code = int(login_resp.get('ReturnCode', 1))
                  if return_code != 0:
                      if return_code == 203:
                          # Invalid username or password.
                          _LOGGER.debug('Invalid username or password')
                          self._credentials = None
                      raise MyQError(login_resp['ErrorMessage'])
  
                  self._security_token = login_resp['SecurityToken']