Skip to content
Dashboard

Node.js Vercel Functions now support per-path request cancellation

Craig AndrewsSoftware Engineer, Infrastructure
vercel.json
{
"functions": {
"api/*": {
"supportsCancellation": true
}
}
}

export const GET = async (req: Request) => {
const abortController = new AbortController();
req.signal.addEventListener("abort", () => {
console.log("request aborted");
abortController.abort();
});
const res = await fetch("https://my-backend-service.example.com", {
headers: {
Authorization: `Bearer ${process.env.AUTH_TOKEN}`,
},
signal: abortController.signal,
});
return new Response(res.body, {
status: res.status,
headers: res.headers,
});
};

import { openai } from '@ai-sdk/openai';
import { streamText } from 'ai';
export async function POST(req: Request) {
const { prompt } = await req.json();
const result = streamText({
model: openai('gpt-4-turbo'),
prompt,
// forward the abort signal
abortSignal: req.signal,
});
return result.toTextStreamResponse();
}