diff --git a/src/Platform/Microsoft.Testing.Platform/Requests/TestHostTestFrameworkInvoker.cs b/src/Platform/Microsoft.Testing.Platform/Requests/TestHostTestFrameworkInvoker.cs
index 8d8d5c6bc8..6fe79d054d 100644
--- a/src/Platform/Microsoft.Testing.Platform/Requests/TestHostTestFrameworkInvoker.cs
+++ b/src/Platform/Microsoft.Testing.Platform/Requests/TestHostTestFrameworkInvoker.cs
@@ -69,7 +69,7 @@ public async Task ExecuteAsync(ITestFramework testFrameworkAdapter, ClientInfo c
 
     public virtual async Task ExecuteRequestAsync(ITestFramework testFrameworkAdapter, TestExecutionRequest request, IMessageBus messageBus, CancellationToken cancellationToken)
     {
-        using SemaphoreSlim requestSemaphore = new(1);
+        using SemaphoreSlim requestSemaphore = new(0, 1);
         await testFrameworkAdapter.ExecuteRequestAsync(new(request, messageBus, requestSemaphore, cancellationToken));
         await requestSemaphore.WaitAsync(cancellationToken);
     }
diff --git a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/ExecutionTests.cs b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/ExecutionTests.cs
index e045dade9f..6134c61a1f 100644
--- a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/ExecutionTests.cs
+++ b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/ExecutionTests.cs
@@ -1,6 +1,8 @@
 // Copyright (c) Microsoft Corporation. All rights reserved.
 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
 
+using System.Diagnostics;
+
 using Microsoft.Testing.Platform.Acceptance.IntegrationTests.Helpers;
 using Microsoft.Testing.Platform.Helpers;
 
@@ -10,6 +12,8 @@ namespace Microsoft.Testing.Platform.Acceptance.IntegrationTests;
 public class ExecutionTests : AcceptanceTestBase
 {
     private const string AssetName = "ExecutionTests";
+    private const string AssetName2 = "ExecutionTests2";
+
     private readonly TestAssetFixture _testAssetFixture;
 
     public ExecutionTests(ITestExecutionContext testExecutionContext, TestAssetFixture testAssetFixture)
@@ -121,6 +125,17 @@ public async Task Exec_WhenListTestsAndMinimumExpectedTestsAreSpecified_Discover
         Assert.That(testHostResult.StandardOutput.Contains(OutputPattern), $"Output of the test host is:\n{testHostResult}");
     }
 
+    [ArgumentsProvider(nameof(TargetFrameworks.All), typeof(TargetFrameworks))]
+    public async Task Exec_Honor_Request_Complete(string tfm)
+    {
+        TestInfrastructure.TestHost testHost = TestInfrastructure.TestHost.LocateFrom(_testAssetFixture.TargetAssetPath2, AssetName2, tfm);
+        Stopwatch stopwatch = Stopwatch.StartNew();
+        TestHostResult testHostResult = await testHost.ExecuteAsync();
+        stopwatch.Stop();
+        Assert.AreEqual(ExitCodes.Success, testHostResult.ExitCode);
+        Assert.IsTrue(stopwatch.Elapsed.TotalSeconds > 3);
+    }
+
     [TestFixture(TestFixtureSharingStrategy.PerTestGroup)]
     public sealed class TestAssetFixture(AcceptanceFixture acceptanceFixture) : TestAssetFixtureBase(acceptanceFixture.NuGetGlobalPackagesFolder)
     {
@@ -180,10 +195,85 @@ public void FilteredOutTest()
 global using Microsoft.Testing.Platform.Builder;
 global using Microsoft.Testing.Framework;
 global using Microsoft.Testing.Extensions;
+""";
+
+        private const string TestCode2 = """
+#file ExecutionTests2.csproj
+<Project Sdk="Microsoft.NET.Sdk">
+    <PropertyGroup>
+        <TargetFrameworks>$TargetFrameworks$</TargetFrameworks>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+        <OutputType>Exe</OutputType>
+        <UseAppHost>true</UseAppHost>
+        <LangVersion>preview</LangVersion>
+    </PropertyGroup>
+    <ItemGroup>
+        <PackageReference Include="Microsoft.Testing.Platform" Version="$MicrosoftTestingPlatformVersion$" />
+    </ItemGroup>
+</Project>
+
+#file Program.cs
+using Microsoft.Testing.Platform;
+using Microsoft.Testing.Platform.Extensions;
+using Microsoft.Testing.Platform.Builder;
+using Microsoft.Testing.Platform.Capabilities;
+using Microsoft.Testing.Platform.Capabilities.TestFramework;
+using Microsoft.Testing.Platform.Extensions.Messages;
+using Microsoft.Testing.Platform.Extensions.TestFramework;
+using System.Threading.Tasks;
+
+ITestApplicationBuilder builder = await TestApplication.CreateBuilderAsync(args);
+builder.RegisterTestFramework(_ => new Capabilities(), (_, __) => new DummyAdapter());
+using ITestApplication app = await builder.BuildAsync();
+return await app.RunAsync();
+
+internal class DummyAdapter : ITestFramework, IDataProducer
+{
+    public string Uid => nameof(DummyAdapter);
+
+    public string Version => string.Empty;
+
+    public string DisplayName => string.Empty;
+
+    public string Description => string.Empty;
+
+    public Type[] DataTypesProduced => new[] { typeof(TestNodeUpdateMessage) };
+
+    public Task<CloseTestSessionResult> CloseTestSessionAsync(CloseTestSessionContext context) => Task.FromResult(new CloseTestSessionResult() { IsSuccess = true });
+
+    public Task<CreateTestSessionResult> CreateTestSessionAsync(CreateTestSessionContext context) => Task.FromResult(new CreateTestSessionResult() { IsSuccess = true });
+
+    public Task ExecuteRequestAsync(ExecuteRequestContext context)
+    {
+        Task.Run(async() =>
+        {
+            await context.MessageBus.PublishAsync(this, new TestNodeUpdateMessage(
+                context.Request.Session.SessionUid,
+                new TestNode() { Uid = "0", DisplayName = "Test", Properties = new(PassedTestNodeStateProperty.CachedInstance) }));
+
+            Thread.Sleep(3_000);
+
+            context.Complete();
+        });
+
+        return Task.CompletedTask;
+    }
+
+    public Task<bool> IsEnabledAsync() => Task.FromResult(true);
+}
+
+internal class Capabilities : ITestFrameworkCapabilities
+{
+    IReadOnlyCollection<ITestFrameworkCapability> ICapabilities<ITestFrameworkCapability>.Capabilities => Array.Empty<ITestFrameworkCapability>();
+}
+
 """;
 
         public string TargetAssetPath => GetAssetPath(AssetName);
 
+        public string TargetAssetPath2 => GetAssetPath(AssetName2);
+
         public override IEnumerable<(string ID, string Name, string Code)> GetAssetsToGenerate()
         {
             yield return (AssetName, AssetName,
@@ -191,6 +281,12 @@ public void FilteredOutTest()
                 .PatchTargetFrameworks(TargetFrameworks.All)
                 .PatchCodeWithReplace("$MicrosoftTestingPlatformVersion$", MicrosoftTestingPlatformVersion)
                 .PatchCodeWithReplace("$MicrosoftTestingPlatformExtensionsVersion$", MicrosoftTestingPlatformExtensionsVersion));
+
+            yield return (AssetName2, AssetName2,
+                TestCode2
+                .PatchTargetFrameworks(TargetFrameworks.All)
+                .PatchCodeWithReplace("$MicrosoftTestingPlatformVersion$", MicrosoftTestingPlatformVersion)
+                .PatchCodeWithReplace("$MicrosoftTestingPlatformExtensionsVersion$", MicrosoftTestingPlatformExtensionsVersion));
         }
     }
 }
diff --git a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/NoBannerTests.cs b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/NoBannerTests.cs
index 80639a5deb..cb31f68862 100644
--- a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/NoBannerTests.cs
+++ b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/NoBannerTests.cs
@@ -126,7 +126,11 @@ public Task<CreateTestSessionResult> CreateTestSessionAsync(CreateTestSessionCon
         => Task.FromResult(new CreateTestSessionResult() { IsSuccess = true });
     public Task<CloseTestSessionResult> CloseTestSessionAsync(CloseTestSessionContext context)
         => Task.FromResult(new CloseTestSessionResult() { IsSuccess = true });
-    public Task ExecuteRequestAsync(ExecuteRequestContext context) => Task.CompletedTask;
+    public Task ExecuteRequestAsync(ExecuteRequestContext context)
+    {
+       context.Complete();
+       return Task.CompletedTask;
+    }
 }
 """;
 
diff --git a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/TelemetryTests.cs b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/TelemetryTests.cs
index 3d2395551b..9c4d545d2a 100644
--- a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/TelemetryTests.cs
+++ b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/TelemetryTests.cs
@@ -202,7 +202,11 @@ public class DummyTestAdapter : ITestFramework
 
     public Task<CreateTestSessionResult> CreateTestSessionAsync(CreateTestSessionContext context) => Task.FromResult(new CreateTestSessionResult() { IsSuccess = true });
     public Task<CloseTestSessionResult> CloseTestSessionAsync(CloseTestSessionContext context) => Task.FromResult(new CloseTestSessionResult() { IsSuccess = true });
-    public Task ExecuteRequestAsync(ExecuteRequestContext context) => Task.CompletedTask;
+    public Task ExecuteRequestAsync(ExecuteRequestContext context)
+    {
+       context.Complete();
+       return Task.CompletedTask;
+    }
 }
 """;
 
diff --git a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/testsbaseline.txt b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/testsbaseline.txt
index 6016c094d5..de1e209a26 100644
--- a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/testsbaseline.txt
+++ b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/testsbaseline.txt
@@ -70,6 +70,10 @@ Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platfor
 Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.EnvironmentVariablesConfigurationProviderTests.EnabledEnvironmentVariablesConfiguration_SetEnvironmentVariable_ShouldSucceed(string) (net6.0)
 Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.EnvironmentVariablesConfigurationProviderTests.EnabledEnvironmentVariablesConfiguration_SetEnvironmentVariable_ShouldSucceed(string) (net7.0)
 Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.EnvironmentVariablesConfigurationProviderTests.EnabledEnvironmentVariablesConfiguration_SetEnvironmentVariable_ShouldSucceed(string) (net8.0)
+Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.ExecutionTests.Exec_Honor_Request_Complete(string) (net462)
+Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.ExecutionTests.Exec_Honor_Request_Complete(string) (net6.0)
+Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.ExecutionTests.Exec_Honor_Request_Complete(string) (net7.0)
+Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.ExecutionTests.Exec_Honor_Request_Complete(string) (net8.0)
 Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.ExecutionTests.Exec_WhenFilterIsSpecified_OnlyFilteredTestsAreRun(string) (net462)
 Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.ExecutionTests.Exec_WhenFilterIsSpecified_OnlyFilteredTestsAreRun(string) (net6.0)
 Microsoft.Testing.Platform.Acceptance.IntegrationTests.Microsoft.Testing.Platform.Acceptance.IntegrationTests.ExecutionTests.Exec_WhenFilterIsSpecified_OnlyFilteredTestsAreRun(string) (net7.0)