public override Task Copy(Stream target)
 {
     try
     {
         var wrapper = new BufferingStreamWrapper(target);
         return(contentProducer.ProduceAsync(wrapper, cancellationToken));
     }
     catch (ContentAlreadyUsedException)
     {
         throw;
     }
     catch (OperationCanceledException)
     {
         throw;
     }
     catch (BufferingStreamWrapperException error)
     {
         // ReSharper disable once PossibleNullReferenceException
         throw error.InnerException;
     }
     catch (Exception error)
     {
         throw new UserContentProducerException($"Failed to read from user-provided content producer of type '{contentProducer.GetType().Name}'.", error);
     }
 }
 public void SetUp()
 {
     stream  = Substitute.For <Stream>();
     wrapper = new BufferingStreamWrapper(stream);
     buffer  = new byte[1];
 }