async def METHOD_NAME(self, payload: dict, in_edge=None) -> Result:
    dot = self._get_dot_accessor(payload)
    contact_email = dot[self.config.contact_email]
    try:
        result = await self.client.fetch_contact_by_email(str(contact_email))
        return Result(port="response", value=result)
    except MauticClientAuthException:
        try:
            await self.client.update_token()
            result = await self.client.fetch_contact_by_email(str(contact_email))
            if self.debug:
                self.resource.credentials.test = self.client.credentials
            else:
                self.resource.credentials.production = self.client.credentials
            await resource_db.save_record(self.resource)
            return Result(port="response", value=result)
        except MauticClientAuthException as e:
            return Result(port="error", value={"error": str(e), "msg": ""})
        except StorageException as e:
            return Result(port="error", value={"error": "Plugin was unable to update credentials.", "msg": str(e)})
        except MauticClientException as e:
            return Result(port="error", value={"error": "Mautic API error", "msg": str(e)})
    except MauticClientException as e:
        return Result(port="error", value={"error": "Mautic API error", "msg": str(e)})