summaryrefslogtreecommitdiff
path: root/src/email.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/email.ts')
-rw-r--r--src/email.ts15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/email.ts b/src/email.ts
index cf588f4..337572c 100644
--- a/src/email.ts
+++ b/src/email.ts
@@ -26,6 +26,7 @@ interface ImapClientI {
opts: Record<string, any>,
) => Promise<boolean>;
logout: () => Promise<void>;
+ mailboxClose: () => Promise<void>;
}
type Email = {
@@ -287,7 +288,10 @@ export const perform = (
if (O.isSome(e.imap)) {
const imap = e.imap.value;
return pipe(
- TE.tryCatch(() => imap.logout(), toError),
+ TE.tryCatch(
+ () => imap.mailboxClose().then(() => imap.logout()),
+ toError,
+ ),
TE.flatMap(() => TE.left(e)),
);
}
@@ -295,8 +299,13 @@ export const perform = (
},
({ mailboxLock, deleted, imap }) => {
mailboxLock.release();
- imap.logout();
- return TE.right(deleted);
+ return pipe(
+ TE.tryCatch(
+ () => imap.mailboxClose().then(() => imap.logout()),
+ toError,
+ ),
+ TE.flatMap(() => TE.right(deleted)),
+ );
},
),
);