When can eliminate() be used safely?



I am looking at implicit solutions of first order ODEs, and want to know when 
it is safe to use eliminate().  I am after a way to do this automatically as part
of a larger calculation.

A working example, where ax and y are given as implicit functions of t
	y-t*x+t^2+t=0,
	-x+2*t+1=0

I can use eliminate() to eliminate t, so I can solve for y

eliminate([y-t*x+t^2+t,-x+2*t+1],[t]);
[4*y-x^2+2*x-1]
solve(%,y);
[y = (x^2-2*x+1)/4]

A non-working example
	y-t*x-COS(t)=0
	SIN(t)-x=0

eliminate([y-t*x-COS(t),SIN(t)-x],[t]);
[SIN(t)-x]


Is there any way to decide:
 - in advance when it is safe to use eliminate, or
 - after the event that the result is from eliminate() is meaningless (or wrong)