Hey @fforres we recently introduced this to the d1 table we can look at bringing in a similar patter
Hey @fforres we recently introduced this to the d1 table we can look at bringing in a similar pattern for workflows as well!
{retries:{limit:0}} to the step, but wrangler deploy didn't like that one when releasing to prod. So I wrapped the function with a try/catch throw new NonRetryableError() and hoped for the best. Unfortunately, we've already had our first double send. The batch send step failed with a Attempt failed due to internal workflows error, which seems to skip/miss the try/catch, so the (already successful, but now timed out) step retried step.do returns a promise, you can use .catch() on it!neverthrow in your project like I am, you can do this! options.globalFailureHandler
Error: Not implemented yetenv.MY_WORKFLOW.create() call? If so, let's say after user registration, we want to setup billings, welcome emails, etc for the user (our most common use-case currently), with our usual load, we would that limit incredibly quickly, what is the solution for these scenarios?

wrangler logout && wrangler login a few times but its flaky and oddStep map csv to contacts-1 output is too large. Maximum allowed size is 1MiB.
{retries:{limit:0}}wrangler deploytry/catch throw new NonRetryableError()Attempt failed due to internal workflows errorawait new Promise(resolve => setTimeout(resolve, 1000));step.do.catch()neverthrowoptions.globalFailureHandlerError: Aborting engine: Grace period completeError: Not implemented yetenv.MY_WORKFLOW.create()A request to the Cloudflare API (/accounts/<id>/workflows/<name>) failed.
Authentication error [code: 10000]wrangler logout && wrangler loginStep map csv to contacts-1 output is too large. Maximum allowed size is 1MiB.await wf.complete;
console.log(await wf.output);const validationResult = await step
.do('validate', async () => {
// do some logic here
return { somedata: true };
})
.catch((e) => {
// handle your error here, and possibly re-throw it if you want it to be fatal
});const validationResult = await fromPromise(
step.do('validate', async () => {
// do some logic that could throw here
return { somedata: true };
}),
(e) => e,
).match(
(result) => result,
(e) => {
// handle your error here, and possibly re-throw it if you want it to be fatal
},
);