anchor.diff:  
           TTask.Run(
             procedure
  +          var
  +            LOnException: TProc<Exception>;
             begin
               try
  +              if Assigned(AOnException) then
  +              begin
  +                LOnException :=
  +                  procedure (AException: Exception)
  +                  begin
  +                    if ASynchronize then
  +                      TThread.Synchronize(nil
  +                        , procedure
  +                          begin
  +                            AOnException(AException);
  +                          end
  +                      )
  +                    else
  +                      AOnException(AException);
  +                  end;
  +              end
  +              else
  +                LOnException := nil;
  +
                 LResource.GET(nil
                   , procedure (AStream: TStream)
                     begin
  
positive.code: 
          TTask.Run(
            procedure
            begin
              try
                LResource.PUT(
                  ABeforeExecute
                , procedure (AStream: TStream)
  
negative.code:                       ACompletionHandler(LResource);
                    end;
                  end
                , LOnException
                );
              finally
                LResource.Free;
  