# Buggy code
def handle_update(self, update, dispatcher, check_result, context=None):
    """
    This method is called if it was determined that an update should indeed
    be handled by this instance. Calls :attr:`callback` along with its respectful
    arguments. To work with the :class:`telegram.ext.ConversationHandler`, this method
    returns the value returned from :attr:`callback`.
    Note that it can be overridden if needed by the subclassing handler.

    Args:
        update (:obj:`str` | :class:`telegram.Update`): The update to be handled.
        dispatcher (:class:`telegram.ext.Dispatcher`): The calling dispatcher.
        check_result: The result from :attr:`check_update`.

    """
    if context:
        self.collect_additional_context(context, update, dispatcher, check_result)
        return self.callback(update, context)
    else:
        optional_args = self.collect_optional_args(dispatcher, update, check_result)
        return self.callback(dispatcher.bot, update, **optional_args)


# Traceback (telegram.error.BadRequest)
<project_path>/venv/bin/python <project_path>/issue.py
2017-06-20 23:24:11,743 - __main__ - INFO - /start
2017-06-20 23:24:11,906 - telegram.ext.dispatcher - WARNING - A TelegramError was raised while processing the Update.
2017-06-20 23:24:11,907 - __main__ - ERROR - Boom!
2017-06-20 23:24:11,907 - __main__ - INFO - /async_start
2017-06-20 23:24:12,188 - telegram.utils.promise - ERROR - An uncaught error was raised while running the promise
Traceback (most recent call last):
File "<project_path>/venv/src/python-telegram-bot/telegram/utils/promise.py", line 42, in run
self._result = self.pooled_function(*self.args, **self.kwargs)
File "<project_path>/issue.py", line 25, in action_async_start
update.message.reply_text(msg, parse_mode=ParseMode.HTML)
File "<project_path>/venv/src/python-telegram-bot/telegram/message.py", line 340, in reply_text
return self.bot.send_message(self.chat_id, *args, **kwargs)
File "<project_path>/venv/src/python-telegram-bot/telegram/bot.py", line 125, in decorator
result = func(self, *args, **kwargs)
File "<project_path>/venv/src/python-telegram-bot/telegram/bot.py", line 158, in decorator
return Bot._message_wrapper(self, url, data, *args, **kwargs)
File "<project_path>/venv/src/python-telegram-bot/telegram/bot.py", line 146, in _message_wrapper
result = self._request.post(url, data, timeout=kwargs.get('timeout'))
File "<project_path>/venv/src/python-telegram-bot/telegram/utils/request.py", line 252, in post
**urlopen_kwargs)
File "<project_path>/venv/src/python-telegram-bot/telegram/utils/request.py", line 194, in _request_wrapper
raise BadRequest(message)
telegram.error.BadRequest: Can't parse entities in message text: unsupported start tag "invalid_tag" at byte offset 0

Process finished with exit code 0

# Fixed code
def handle_update(self, update, dispatcher, check_result, context=None):
    """
    This method is called if it was determined that an update should indeed
    be handled by this instance. Calls :attr:`callback` along with its respectful
    arguments. To work with the :class:`telegram.ext.ConversationHandler`, this method
    returns the value returned from :attr:`callback`.
    Note that it can be overridden if needed by the subclassing handler.

    Args:
        update (:obj:`str` | :class:`telegram.Update`): The update to be handled.
        dispatcher (:class:`telegram.ext.Dispatcher`): The calling dispatcher.
        check_result: The result from :attr:`check_update`.

    """
    if context:
        self.collect_additional_context(context, update, dispatcher, check_result)
        if self.run_async:
            return dispatcher.run_async(self.callback, update, context, update=update)
        else:
            return self.callback(update, context)
    else:
        optional_args = self.collect_optional_args(dispatcher, update, check_result)
        if self.run_async:
            return dispatcher.run_async(
                self.callback, dispatcher.bot, update, update=update, **optional_args
            )
        else:
            return self.callback(dispatcher.bot, update, **optional_args)