---
title: SendErrorCause
summary: The reason that a request sent to a backend failed.
url: https://www.fastly.com/documentation/reference/compute/sdks/rust/fastly/http/request/enum.SendErrorCause/
---

**Kind:** Enum  
**Module:** [request](https://www.fastly.com/documentation/reference/compute/sdks/rust/fastly/http/request/)  
**Package:** fastly 0.13.1  
**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/http/request.rs#3215

```rust
#[non_exhaustive]
pub enum SendErrorCause {
    DnsTimeout,
    DnsError {
        rcode: Option<u16>,
        info_code: Option<u16>,
    },
    DestinationNotFound,
    DestinationUnavailable,
    DestinationIpUnroutable,
    ConnectionRefused,
    ConnectionTerminated,
    ConnectionTimeout,
    ConnectionLimitReached,
    TlsProtocolError,
    TlsCertificateError,
    TlsAlertReceived {
        alert_id: Option<u8>,
    },
    TlsConfigurationError,
    HttpIncompleteResponse,
    HttpResponseHeaderSectionTooLarge,
    HttpResponseBodyTooLarge,
    HttpResponseTimeout,
    HttpResponseStatusInvalid,
    HttpUpgradeFailed,
    Http2StreamError {
        frame_type: u8,
        error_code: u32,
    },
    HttpProtocolError,
    HttpRequestCacheKeyInvalid,
    HttpRequestUriInvalid,
    HttpCacheLimitExceeded,
    HttpCacheApiUnsupported,
    IoError(Error),
    FanoutNotEnabled,
    ImageOptimizerUnsupported,
    InternalError(Option<FastlyStatus>),
    RequestCollapse,
    Custom(Error),
}
```

The reason that a request sent to a backend failed.

## Variants

### DnsTimeout

The system encountered a timeout when trying to find an IP address for the backend
hostname.

### DnsError

- `rcode`: `Option<u16>`
- `info_code`: `Option<u16>`

The system encountered a DNS error when trying to find an IP address for the backend
hostname.

The `rcode` and `info_code` fields may be set with more detail.

### DestinationNotFound

The system cannot determine which backend to use, or the specified backend was invalid.

### DestinationUnavailable

The system considers the backend to be unavailable; e.g., recent attempts to communicate
with it may have failed, or a health check may indicate that it is down.

### DestinationIpUnroutable

The system cannot find a route to the next-hop IP address.

### ConnectionRefused

The system's connection to the backend was refused.

### ConnectionTerminated

The system's connection to the backend was closed before a complete response was
received.

### ConnectionTimeout

The system's attempt to open a connection to the backend timed out.

### ConnectionLimitReached

The system is configured to limit the number of connections it has to the backend, and
that limit has been exceeded.

### TlsProtocolError

The system encountered a TLS error when communicating with the backend, either during the
handshake or afterwards.

### TlsCertificateError

The system encountered an error when verifying the certificate presented by the backend.

### TlsAlertReceived

- `alert_id`: `Option<u8>`

The system received a TLS alert from the backend.

The `alert_id` field will specific which alert occurred.

### TlsConfigurationError

The system encountered an error with the backend TLS configuration.

### HttpIncompleteResponse

The system received an incomplete response to the request from the backend.

### HttpResponseHeaderSectionTooLarge

The system received a response to the request whose header section was considered too
large.

### HttpResponseBodyTooLarge

The system received a response to the request whose body was considered too large.

### HttpResponseTimeout

The system reached a configured time limit waiting for the complete response.

### HttpResponseStatusInvalid

The system received a response to the request whose status code or reason phrase was invalid.

### HttpUpgradeFailed

The process of negotiating an upgrade of the HTTP version between the system and backend
failed.

### Http2StreamError

- `frame_type`: `u8`
- `error_code`: `u32`

The system received an unexpected HTTP/2 error response from the backend.

### HttpProtocolError

The system encountered an HTTP protocol error when communicating with the backend. This
error will only be used when a more specific one is not defined.

### HttpRequestCacheKeyInvalid

An invalid cache key was provided for the request.

### HttpRequestUriInvalid

An invalid URI was provided for the request.

### HttpCacheLimitExceeded

A caching limit was reached.

### HttpCacheApiUnsupported

A caching limit was reached.

### IoError

- `0`: `std::io::Error`

An I/O error was encountered.

### FanoutNotEnabled

Fanout/WebSocket features are not enabled on this service.

### ImageOptimizerUnsupported

Image Optimizer is not supported on this service.

### InternalError

- `0`: `Option<fastly_shared::FastlyStatus>`

The system encountered an unexpected internal error.

### RequestCollapse

This should only occur for "followers" of a request collapse; the leader sees the original
error.

### Custom

- `0`: `anyhow::Error`

A custom error occurred while processing the request.

## Trait implementations

### impl Debug for SendErrorCause

#### fmt

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/http/request.rs#3214

```rust
fn fmt(&self, f: &mut Formatter<'_>) -> Result
```

**Parameters**

- `self`: `&Self`
- `f`: `&mut $crate::fmt::Formatter`

**Returns**

`$crate::fmt::Result`

### impl Display for SendErrorCause

#### fmt

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/http/request.rs#3214

```rust
fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result
```

**Parameters**

- `self`: `&Self`
- `__formatter`: `&mut ::core::fmt::Formatter`

**Returns**

`::core::fmt::Result`

### impl Error for SendErrorCause

#### source

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/http/request.rs#3214

```rust
fn source(&self) -> Option<&(dyn Error + 'static)>
```

**Parameters**

- `self`: `&Self`

**Returns**

`::core::option::Option<&(dyn Error + 'static)>`

### impl From<Error> for SendErrorCause

#### from

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/http/request.rs#3214

```rust
fn from(source: Error) -> Self
```

**Parameters**

- `source`: `std::io::Error`

**Returns**

`Self`

### impl From<SendError> for SendErrorCause

#### from

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/http/request.rs#3580

```rust
fn from(err: SendError) -> Self
```

**Parameters**

- `err`: `SendError`

**Returns**

`Self`

## Auto trait implementations

- `Freeze`
- `RefUnwindSafe`
- `Send`
- `Sync`
- `Unpin`
- `UnsafeUnpin`
- `UnwindSafe`

## Blanket implementations

- `Any`
- `Borrow<T>`
- `BorrowMut<T>`
- `Downcast`
- `DowncastSync`
- `ErasedDestructor`
- `From<T>`
- `Into<U>`
- `IntoEither`
- `Same`
- `ToString`
- `TryFrom<U>`
- `TryInto<U>`
