vercel / micro

Asynchronous HTTP microservices

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

await buffer(req) hangs forever, doesn't finish

AndrewRayCode opened this issue · comments

In a Stripe webhook in Next.js api route src/pages/api/webhooks/stripe.ts

import { buffer } from 'micro';

const action = async (req: NextApiRequest, res: NextApiResponse) => {
  console.log('raw body', req.body);
  const body = await buffer(req);
  console.log('parsed body', body);
}

This hangs forever with both micro 9.4.0 and 10.0.0. Using Nextjs 13.4.2.

Sample console output:

raw body {
id: '...',
object: 'event',
api_version: '2020-08-27',
created: 1707460102,
data: {
object: {
...
}
}
type: 'product.updated'
}

As you can see, req.body is populated, but the parsed body line is never logged. The webhook callback hangs from Stripe and eventually times out.

Failed to POST: Post "http://localhost:3030/api/webhooks/stripe": context deadline exceeded

I must have been doing something else wrong, because this is working for me now. I don't have an idea of what I changed to resolve this issue. But I am no longer seeing the await hang forever.