private async Task TryDispatch(ProjectionDescriptor descriptor, MessageEnvelope envelope, ProjectingContext context) { try { var instance = ProjectionFactory.CreateProjectionInstance(descriptor.ProjectionType); if (instance == null) { throw new NullReferenceException($"Projection instance {descriptor.ProjectionType.FullName} is null."); } await descriptor.Invoke(instance, envelope.Message, envelope.Meta, context); } catch (Exception e) { throw new ProjectingException(descriptor, envelope, context, e); } }