# JavaScript Examples - Deny a request based on Geoip

Deny or allow a request based on the visitor's country, resolved from GeoIP data on Azion's global network. Use this pattern in a firewall function to enforce geographic restrictions, blocking traffic from specific regions before it ever reaches your application.

```js
async function firewallHandler(event){
    // Access the country code through geoip
    let countryCode = event.request.metadata["geoip_country_code"]

    // Do some logic here
    // In this example, we are blocking access from Brazil
    if (countryCode === "BR"){
        event.deny();
    }

    // Then, if it comes from any other country,
    // the processing continues
    event.continue();
}

addEventListener("firewall", (event)=>event.waitUntil(firewallHandler(event)));
```

## How it works

The function listens for the `firewall` event and runs its asynchronous handler inside `event.waitUntil()`. It reads the visitor's country from `event.request.metadata["geoip_country_code"]`, and when the request comes from Brazil it calls `event.deny()`, which returns a default 403 response and stops further processing. For requests from any other country, `event.continue()` allows the request to proceed normally to its destination.

## Related resources

- [JavaScript examples](/en/documentation/devtools/javascript-examples/)
- [Runtime APIs](/en/documentation/products/applications/functions/runtime-apis/javascript/fetch-event/)