<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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']