public async Task End(Exception ex = null)
 {
     if (ex != null)
     {
         return;
     }
     if (this.CurrentPosition.HasValue)
     {
         await _checkpoints.Save(_settings.EndpointName(), CurrentPosition.Value);
     }
 }