def METHOD_NAME(self, content):
    # 400 will return an error message indicating what's wrong with the
    #    javascript message you sent.
    # 403 is an error indicating that the client app is missing the
    #    FCM Cloud Messaging permission (and a URL to set it)
    # Successful content body
    #   { "name": "projects/.../messages/0:..."}
    # Failures:
    #   { "error":
    #       { "status": str
    #         "message": str
    #         "code": u64
    #         "details: [
    #             {"errorCode": str,
    #              "@type": str},
    #             {"fieldViolations": [
    #               {"field": str,
    #                "description": str}
    #              ],
    #              "type", str
    #             }
    #          ]
    #      }
    #  }
    # (Failures are a tad more verbose)
    if 500 <= self.code <= 599:
        self.retry_message = content
        return self
    try:
        data = json.loads(content)
        if self.code in (400, 403, 404, 410) or data.get('error'):
            # Having a hard time finding information about how some
            # things are handled in FCM, e.g. retransmit requests.
            # For now, catalog them as errors and provide back-pressure.
            err = data.get("error")
            if err.get("status") == "NOT_FOUND":
                raise FCMNotFoundError("FCM recipient no longer available")
            raise RouterException(
                "{}: {} {}".format(
                    err.get("status"),
                    err.get("message"),
                    err.get("details", "No Details")))
        if "name" in data:
            self.success = 1
    except (TypeError, ValueError, KeyError, AttributeError):
        raise RouterException(
            "Unknown error response: {}".format(content))
    return self