Dragons hold on to upset Ospreys