/// <summary>
 /// Runs the async task that performs the scripting operation.
 /// </summary>
 private void RunTask <T>(RequestContext <T> context, ScriptingOperation operation)
 {
     ScriptingTask = Task.Run(async() =>
     {
         try
         {
             this.ActiveOperations[operation.OperationId] = operation;
             operation.Execute();
         }
         catch (Exception e)
         {
             await context.SendError(e);
         }
         finally
         {
             ScriptingOperation temp;
             this.ActiveOperations.TryRemove(operation.OperationId, out temp);
         }
     }).ContinueWithOnFaulted(async t => await context.SendError(t.Exception));
 }
 /// <summary>
 /// Runs the async task that performs the scripting operation.
 /// </summary>
 private void RunTask <T>(RequestContext <T> context, ScriptingOperation operation)
 {
     Task.Run(() =>
     {
         try
         {
             Debug.Assert(!this.ActiveOperations.ContainsKey(operation.OperationId), "Operation id must be unique");
             this.ActiveOperations[operation.OperationId] = operation;
             operation.Execute();
         }
         catch (Exception e)
         {
             context.SendError(e);
         }
         finally
         {
             ScriptingOperation temp;
             this.ActiveOperations.TryRemove(operation.OperationId, out temp);
         }
     });
 }