If you are sending a beacon, you should not need a 1x1 GIF. Instead, send an empty response with an HTTP status 204 (“No Content”). In the browser, you can dispatch the request using
navigator.sendBeacon or use an image if you like - the only reason we ever needed 1x1 GIFs was that browsers would display a ‘broken image’ placeholder. No browsers do that today, so your zero-data image will still be completely invisible (further, you could make it invisible using CSS, so there are really lots of options for ensuring that there is no visual artefact).
However, to address your question more directly, there is still no way to serve a binary object directly from the Fastly edge. You need to serve it from a backend, and cache it on fastly. Using an S3 or GCS bucket is a good solution to this if you decide you really need to serve an image.