internal InternalTransaction(Transaction outcomeSource, ITransactionPromoter promoter)
{
_absoluteTimeout = long.MaxValue;
// Store the initial creater as it will be the source of outcome events
_outcomeSource = outcomeSource;
// Initialize the hash
_transactionHash = TransactionManager.TransactionTable.Add(this);
// Save the transaction promoter.
_promoter = promoter;
// This transaction starts in a special state.
TransactionState.TransactionStateSubordinateActive.EnterState(this);
// This transaction promotes through delegation
_promoteState = TransactionState.TransactionStateDelegatedSubordinate;
}