public IFuture Send(object obj) { IPacket packet; try { packet = PacketEncoder.Encode(this, obj); } catch (Exception ex) { SessionCaughtException(ex); AsyncFuture future = new AsyncFuture(this); future.AssociatedObject = obj; return(future); } return(Send(obj, packet)); }