async def remove_pusher(self, app_id: str, pushkey: str, user_id: str) -> None:
    appid_pushkey = ('%s:%s' % (app_id, pushkey))
    byuser = self.pushers.get(user_id, {})
    if (appid_pushkey in byuser):
        logger.info('Stopping pusher %s / %s', user_id, appid_pushkey)
        pusher = byuser.pop(appid_pushkey)
        pusher.on_stop()
        synapse_pushers.labels(type(pusher).__name__, pusher.app_id).dec()
    if self._remove_pusher_client:
        (await self._remove_pusher_client(app_id=app_id, pushkey=pushkey, user_id=user_id))
    else:
        (await self.store.delete_pusher_by_app_id_pushkey_user_id(app_id, pushkey, user_id))
async def remove_pusher(self, app_id: str, pushkey: str, user_id: str) -> None:
    appid_pushkey = ('%s:%s' % (app_id, pushkey))
    byuser = self.pushers.get(user_id, {})
    if (appid_pushkey in byuser):
        logger.info('Stopping pusher %s / %s', user_id, appid_pushkey)
        pusher = byuser.pop(appid_pushkey)
        pusher.on_stop()
        synapse_pushers.labels(type(pusher).__name__, pusher.app_id).dec()
    if self._remove_pusher_client:
        (await self._remove_pusher_client(app_id=app_id, pushkey=pushkey, user_id=user_id))
    else:
        (await self.store.delete_pusher_by_app_id_pushkey_user_id(app_id, pushkey, user_id))