diff --git a/lib/workers/branch/index.ts b/lib/workers/branch/index.ts
index 6c27807825300f3be3974994e046e953c851414b..ad9278d363a235fd7a6ece099fa2d0487977e2a1 100644
--- a/lib/workers/branch/index.ts
+++ b/lib/workers/branch/index.ts
@@ -451,6 +451,9 @@ export async function processBranch(
     if (pr === 'needs-pr-approval') {
       return 'needs-pr-approval';
     }
+    if (pr === 'pending') {
+      return 'pending';
+    }
     if (pr) {
       const topic = emojify(':warning: Artifact update problem');
       if (config.artifactErrors && config.artifactErrors.length) {
diff --git a/lib/workers/pr/index.ts b/lib/workers/pr/index.ts
index 8a08faf529bba93f85b68f3073ca029dbb12bf3f..e8494a65fb3ca2bd4da064bc887b2688482a6afa 100644
--- a/lib/workers/pr/index.ts
+++ b/lib/workers/pr/index.ts
@@ -59,7 +59,7 @@ async function addAssigneesReviewers(config, pr: Pr): Promise<void> {
 // Ensures that PR exists with matching title/body
 export async function ensurePr(
   prConfig: BranchConfig
-): Promise<Pr | 'needs-pr-approval'> {
+): Promise<Pr | 'needs-pr-approval' | 'pending'> {
   const config: BranchConfig = { ...prConfig };
 
   logger.trace({ config }, 'ensurePr');
@@ -127,7 +127,7 @@ export async function ensurePr(
       logger.debug(
         `Branch status is "${await getBranchStatus()}" - not creating PR`
       );
-      return null;
+      return 'pending';
     }
     logger.debug('Branch status success');
   } else if (
@@ -159,7 +159,7 @@ export async function ensurePr(
         logger.debug(
           `Branch is ${elapsedHours} hours old - skipping PR creation`
         );
-        return null;
+        return 'pending';
       }
       logger.debug(
         `prNotPendingHours=${config.prNotPendingHours} threshold hit - creating PR`
diff --git a/test/workers/branch/index.spec.ts b/test/workers/branch/index.spec.ts
index cb198a68e19811b38202e1c1b504a49a3f85163f..0995ca95317fb72464378ce2ddc8cadfb0957e04 100644
--- a/test/workers/branch/index.spec.ts
+++ b/test/workers/branch/index.spec.ts
@@ -257,6 +257,19 @@ describe('workers/branch', () => {
         'needs-pr-approval'
       );
     });
+    it('returns if branch exists but pending', async () => {
+      getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
+        updatedPackageFiles: [{}],
+      } as never);
+      npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({
+        artifactErrors: [],
+        updatedArtifacts: [{}],
+      } as never);
+      platform.branchExists.mockResolvedValueOnce(true);
+      automerge.tryBranchAutomerge.mockResolvedValueOnce('failed');
+      prWorker.ensurePr.mockResolvedValueOnce('pending');
+      expect(await branchWorker.processBranch(config)).toEqual('pending');
+    });
     it('ensures PR and tries automerge', async () => {
       getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
         updatedPackageFiles: [{}],
diff --git a/test/workers/pr/index.spec.ts b/test/workers/pr/index.spec.ts
index 912ee3f0252ece098d87f614b77dd3ceb00345c1..dc5ba567485d603504d5e9335d23e47a5fba788e 100644
--- a/test/workers/pr/index.spec.ts
+++ b/test/workers/pr/index.spec.ts
@@ -155,7 +155,7 @@ describe('workers/pr', () => {
       platform.getBranchStatus.mockResolvedValueOnce('failed');
       config.prCreation = 'status-success';
       const pr = await prWorker.ensurePr(config);
-      expect(pr).toBeNull();
+      expect(pr).toEqual('pending');
     });
     it('should return needs-approval if prCreation set to approval', async () => {
       platform.getBranchStatus.mockResolvedValueOnce('success');
@@ -236,7 +236,7 @@ describe('workers/pr', () => {
       );
       config.prCreation = 'not-pending';
       const pr = await prWorker.ensurePr(config);
-      expect(pr).toBeNull();
+      expect(pr).toEqual('pending');
     });
     it('should create PR if pending timeout hit', async () => {
       platform.getBranchStatus.mockResolvedValueOnce('pending');