export async function persistParsedPdfWhileSourceExists(input: { sourceObjectKey: string; sourceExists: (key: string) => Promise; putParsedObject: () => Promise; deleteParsedObject: (key: string) => Promise; }): Promise { if (!await input.sourceExists(input.sourceObjectKey)) { throw new Error('PDF source object was deleted before parsed output could be persisted'); } const parsedObjectKey = await input.putParsedObject(); if (!await input.sourceExists(input.sourceObjectKey)) { await input.deleteParsedObject(parsedObjectKey); throw new Error('PDF source object was deleted while parsed output was being persisted'); } return parsedObjectKey; }