diff --git a/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs b/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs
index cae69dd66c1911c5f17afed60b652649c63dfc69..9dd9e019979b4f2b7846917efc2017e9fbf02251 100644
--- a/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs
+++ b/src/Http/Http.Abstractions/ref/Microsoft.AspNetCore.Http.Abstractions.netcoreapp3.0.cs
@@ -250,7 +250,7 @@ namespace Microsoft.AspNetCore.Http
     {
         protected HttpRequest() { }
         public abstract System.IO.Stream Body { get; set; }
-        public abstract System.IO.Pipelines.PipeReader BodyReader { get; set; }
+        public virtual System.IO.Pipelines.PipeReader BodyReader { get { throw null; } set { } }
         public abstract long? ContentLength { get; set; }
         public abstract string ContentType { get; set; }
         public abstract Microsoft.AspNetCore.Http.IRequestCookieCollection Cookies { get; set; }
@@ -274,7 +274,7 @@ namespace Microsoft.AspNetCore.Http
     {
         protected HttpResponse() { }
         public abstract System.IO.Stream Body { get; set; }
-        public abstract System.IO.Pipelines.PipeWriter BodyWriter { get; set; }
+        public virtual System.IO.Pipelines.PipeWriter BodyWriter { get { throw null; } set { } }
         public abstract long? ContentLength { get; set; }
         public abstract string ContentType { get; set; }
         public abstract Microsoft.AspNetCore.Http.IResponseCookies Cookies { get; }
@@ -290,7 +290,7 @@ namespace Microsoft.AspNetCore.Http
         public abstract void Redirect(string location, bool permanent);
         public virtual void RegisterForDispose(System.IDisposable disposable) { }
         public virtual void RegisterForDisposeAsync(System.IAsyncDisposable disposable) { }
-        public abstract System.Threading.Tasks.Task StartAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));
+        public virtual System.Threading.Tasks.Task StartAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
     }
     public static partial class HttpResponseWritingExtensions
     {
diff --git a/src/Http/Http.Abstractions/src/HttpRequest.cs b/src/Http/Http.Abstractions/src/HttpRequest.cs
index 1163cbf52a231680cf9fcd23d5db4187c86a8d95..a63438450b405c541ff6261cc3a24f73f8c9f72a 100644
--- a/src/Http/Http.Abstractions/src/HttpRequest.cs
+++ b/src/Http/Http.Abstractions/src/HttpRequest.cs
@@ -1,6 +1,7 @@
 // Copyright (c) .NET Foundation. All rights reserved.
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
+using System;
 using System.IO;
 using System.IO.Pipelines;
 using System.Threading;
@@ -106,7 +107,7 @@ namespace Microsoft.AspNetCore.Http
         /// <summary>
         /// Gets or sets the request body pipe <see cref="PipeReader"/>.
         /// </summary>
-        public abstract PipeReader BodyReader { get; set; }
+        public virtual PipeReader BodyReader { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
 
         /// <summary>
         /// Checks the Content-Type header for form types.
diff --git a/src/Http/Http.Abstractions/src/HttpResponse.cs b/src/Http/Http.Abstractions/src/HttpResponse.cs
index f38e953771c8aaedae810f41e09f17c7800e2608..d5a144dd7d87c93836343311cc2ea9d497a5072a 100644
--- a/src/Http/Http.Abstractions/src/HttpResponse.cs
+++ b/src/Http/Http.Abstractions/src/HttpResponse.cs
@@ -47,7 +47,7 @@ namespace Microsoft.AspNetCore.Http
         /// <summary>
         /// Gets or sets the response body pipe <see cref="PipeWriter"/>
         /// </summary>
-        public abstract PipeWriter BodyWriter { get; set; }
+        public virtual PipeWriter BodyWriter { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
 
         /// <summary>
         /// Gets or sets the value for the <c>Content-Length</c> response header.
@@ -129,6 +129,6 @@ namespace Microsoft.AspNetCore.Http
         /// <remarks>
         /// If the <see cref="IHttpResponseStartFeature"/> isn't set, StartAsync will default to calling HttpResponse.Body.FlushAsync().
         /// </remarks>
-        public abstract Task StartAsync(CancellationToken cancellationToken = default);
+        public virtual Task StartAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException(); }
     }
 }