public void QueueEvents(RemoteEvent remoteEvent)
        {
            try
            {
                if (_eventManager == null)
                {
                    ConnectionRequest(out var auxHandle, out var ipAddress, out var portNumber);
                    _eventManager = new GdsEventManager(auxHandle, ipAddress, portNumber);
                    var dummy = _eventManager.WaitForEventsAsync(remoteEvent);
                }

                remoteEvent.LocalId++;

                EventParameterBuffer epb = remoteEvent.BuildEpb();
                var epbData = epb.ToArraySegment();

                XdrStream.Write(IscCodes.op_que_events);
                XdrStream.Write(_handle);
                XdrStream.WriteBuffer(epbData);
                XdrStream.Write(AddressOfAstRoutine);
                XdrStream.Write(ArgumentToAstRoutine);
                XdrStream.Write(remoteEvent.LocalId);

                XdrStream.Flush();

                GenericResponse response = (GenericResponse)ReadResponse();

                remoteEvent.RemoteId = response.ObjectHandle;
            }
            catch (IOException ex)
            {
                throw IscException.ForErrorCode(IscCodes.isc_net_read_err, ex);
            }
        }