public async Task <ITerminal> GetTerminalAsync() { TerminalLease lease; if (_cache.Count == 0) { lease = await Repository.LeaseAsync(Id); } else { lease = _cache.Pop(); } if (lease == null) { return(null); } _leased.Add(lease); // As propriedades do Lease tem prioridade sobre as configuradas no Pool var server = lease.Servidor ?? Server; var empresa = lease.Empresa ?? Empresa; ITerminal term = new Terminal(server, lease.Terminal, empresa); term.AddDisposeCallback(async instance => { await ReleaseTerminalAsync(instance); }); return(term); }