code: async def _client_ready_async(self):
          
          # pylint: disable=protected-access
          if not self.message_handler:
              self.message_handler = self.sender_type(
                  self._session, self._name, self._remote_address,
                  name='sender-link-{}'.format(uuid.uuid4()),
                  debug=self._debug_trace,
                  send_settle_mode=self._send_settle_mode,
                  max_message_size=self._max_message_size,
                  properties=self._link_properties,
                  error_policy=self._error_policy,
                  encoding=self._encoding,
                  loop=self.loop)
              await asyncio.shield(self.message_handler.open_async())
              return False
          if self.message_handler.get_state() == constants.MessageSenderState.Error:
              raise errors.MessageHandlerError(
                  "Message Sender Client is in an error state. "
                  "Please confirm credentials and access permissions."
                  "\nSee debug trace for more details.")
          if self.message_handler.get_state() != constants.MessageSenderState.Open:
              return False
          return True
docs: Determine whether the client is ready to start sending messages.
          To be ready, the connection must be open and authentication complete,
          The Session, Link and MessageSender must be open and in non-errored
          states.
  
          :rtype: bool
          :raises: ~uamqp.errors.MessageHandlerError if the MessageSender
           goes into an error state.