anchor.diff:    strict protected
       FPipe    : THandle;
       FTimeout : DWORD;
  +    FOpenTimeOut : DWORD;  // separate value to allow for fail-fast-on-open scenarios
       FOverlapped : Boolean;
   
       procedure Write( const buffer: TBytes; offset: Integer; count: Integer); override;
  
positive.code: begin
    if IsOpen then Exit;
  
    retries := Max( 1, Round( 1.0 * FTimeOut / INTERVAL));
    timeout := FTimeOut;
  
    // if the server hasn't gotten to the point where the pipe has been created, at least wait the timeout
    // According to MSDN, if no instances of the specified named pipe exist, the WaitNamedPipe function
    // returns IMMEDIATELY, regardless of the time-out value.
    while not WaitNamedPipe( PChar(FPipeName), INTERVAL) do begin
      dwErr := GetLastError;
      if dwErr <> ERROR_FILE_NOT_FOUND
  
negative.code:     constructor Create( const aPipeName : string;
                          const aShareMode: DWORD = 0;
                          const aSecurityAttributes: PSecurityAttributes = nil;
                          const aTimeOut : DWORD = DEFAULT_THRIFT_TIMEOUT;
                          const aOpenTimeOut : DWORD = DEFAULT_THRIFT_PIPE_OPEN_TIMEOUT);  overload;
    end;
  
  
  