           return cb ex
         delete uri.search # If you provide search and query search overrides query :/
         if options.sign_get_request
-          _(uri.query).extend sign_request(deflated.toString('base64'), @private_key, options.relay_state)
+          _.extend(uri.query, sign_request(deflated.toString('base64'), @private_key, options.relay_state))
         else
           uri.query.SAMLRequest = deflated.toString 'base64'
           uri.query.RelayState = options.relay_state if options.relay_state?

    attribute_name = get_attribute_value attribute, 'Name'
    throw new Error("Invalid attribute without name") unless attribute_name?
    attribute_values = attribute.getElementsByTagNameNS(XMLNS.SAML, 'AttributeValue')
    assertion_attributes[attribute_name] = _(attribute_values).map (attribute_value) ->
      attribute_value.childNodes[0]?.data or ''
  assertion_attributes

# Takes in an object containing SAML Assertion Attributes and returns an object with certain common attributes changed

      @alt_private_keys = [].concat(@alt_private_keys or [])
      @alt_certs = [].concat(@alt_certs or [])

      @shared_options = _.pick(options,
        "force_authn", "auth_context", "nameid_format", "sign_get_request", "allow_unencrypted_assertion", "audience", "notbefore_skew")

    # Returns:
