code: async def execute_command(
          self, *args: bytes, timeout: DefaultNumType = _default
      ) -> SMTPResponse:
          
          if timeout is _default:
              timeout = self.timeout  # type: ignore
  
          self._raise_error_if_disconnected()
  
          try:
              response = await self.protocol.execute_command(  # type: ignore
                  *args, timeout=timeout
              )
          except SMTPServerDisconnected:
              # On disconnect, clean up the connection.
              self.close()
              raise
  
          # If the server is unavailable, be nice and close the connection
          if response.code == SMTPStatus.domain_unavailable:
              self.close()
  
          return response
docs: Check that we're connected, if we got a timeout value, and then
          pass the command to the protocol.
  
          :raises SMTPServerDisconnected: connection lost