protected void RaiseError(Exception error)
{
_exception = error;
DiagnosticAbstraction.Log("Raised exception: " + error);
var errorOccuredWaitHandle = _errorOccuredWaitHandle;
if (errorOccuredWaitHandle != null)
errorOccuredWaitHandle.Set();
SignalErrorOccurred(error);
}