FlowiseAI/Flowise · error · Error

Failed to make DELETE request: ${error instanceof Error ? er

Error message

Failed to make DELETE request: ${error instanceof Error ? error.message : 'Unknown error'}

What it means

Thrown by RequestsDelete tool's _call inside its catch block, wrapping any error that escaped the inner try (including the explicit HTTP Error throw, or a secureFetch/network failure). The message extracts the underlying Error.message, falling back to 'Unknown error' for non-Error throws. Because the HTTP Error from error 478 is re-thrown here, this is the outermost error a caller sees for any DELETE failure.

Source

Thrown at packages/components/nodes/tools/RequestsDelete/core.ts:182

                url.searchParams.append(key, String(value))
            })
            finalUrl = url.toString()
        }

        try {
            const res = await secureFetch(finalUrl, {
                method: 'DELETE',
                headers: requestHeaders
            })

            if (!res.ok) {
                throw new Error(`HTTP Error ${res.status}: ${res.statusText}`)
            }

            const text = await res.text()
            return text.slice(0, this.maxOutputLength)
        } catch (error) {
            throw new Error(`Failed to make DELETE request: ${error instanceof Error ? error.message : 'Unknown error'}`)
        }
    }
}

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Read the wrapped message: if it starts with 'HTTP Error', treat as a status-code problem (see error 478 fixes); otherwise treat as a network/connectivity problem.
  2. For network errors, verify DNS, connectivity, proxy settings, and the URL scheme.
  3. Reconfigure secureFetch/httpSecurity allowlists if the target host is blocked.
  4. For TLS errors, validate the certificate and CA chain on the target host.

Example fix

// before: opaque failure
try { await tool._call({}) } catch (e) { console.log(e.message) }
// after: distinguish network vs HTTP
try {
  await tool._call({})
} catch (e) {
  if (e.message.startsWith('HTTP Error')) {
    // server-side status code problem
  } else {
    // network / connectivity problem
  }
}
Defensive patterns

Strategy: retry

Validate before calling

function isRetryableNetworkError(message: string): boolean {
  if (message.startsWith('HTTP Error')) {
    const m = message.match(/HTTP Error (\d+)/)
    const s = m ? Number(m[1]) : 0
    return s === 429 || s >= 500
  }
  return true // pure network/TLS failure is typically transient
}

Type guard

null

Try / catch

async function deleteWithRetry(tool: any, arg: any, retries = 3) {
  for (let i = 0; i <= retries; i++) {
    try {
      return await tool.call(arg)
    } catch (e) {
      const msg = e instanceof Error ? e.message : ''
      const isHttp = msg.startsWith('HTTP Error')
      if (i === retries) throw e
      if (isHttp && !isRetryableNetworkError(msg)) throw e // 4xx non-retryable
      await new Promise(r => setTimeout(r, 2 ** i * 500))
    }
  }
}

Prevention

When it happens

Trigger: A network failure (DNS, connection refused, TLS error, timeout) from secureFetch; the inner 'HTTP Error ...' throw being caught and re-wrapped; a non-Error exception (rare) thrown inside the try.

Common situations: Offline or restricted network egress; misconfigured proxy; invalid URL causing a fetch TypeError; TLS certificate problems; the wrapping obscures the original status code from error 478 when network-level failures occur.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/f7e65c138fda774f. Report an issue: GitHub.