Skip to content

Early return inside a try/catch causing timeout #322

@felipe-heredia

Description

@felipe-heredia

After updating the programming model from ^3.0.0 to ^4.6.0 and the runtime from 3.* to 4.* some functions that has try/catch and early return stop and return timeout.

async function emailValidator(req: HttpRequest): Promise<HttpResponseInit> {
  // ...
  try {
     const email_and_domain = email.split('@')

    if (email_and_domain.length < 2 || !isValidEmail(email)) {
      throw {
        message: `O Email ${email} inválido`,
        status: 400,
        type: InvalidEmailType.INVALID,
      }
    }

    const email_name = email_and_domain[0]
    const email_domain = email_and_domain[1]

    const domainAllowedList = await DomainAllowedListModel.findOne({
      domain: email_domain,
    })

    if (domainAllowedList) {
      response.status = 200
      response.jsonBody = {
        isValid: true,
        message: `O email ${email} é válido. Está na Lista de Autorizações`,
        email,
      }
      return
    }

   // code continues...
  } catch (err) {
    const status = err?.status || 500
    const message = err?.message

    response.status = status
    response.jsonBody = { message, status, ...err }
  }

  return response
}

The throw works good, also when !domainAllowedList the functions works properly, but when get into the return inside the if, the function stops and gives timeout after a couple minutes.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions