AFAICS, the -1 case cannot be handled via a return value (you need it as a mask below), but the -2 can.

I don't think it's good behavior to raise an error due to an obscure implementation detail, when the workaround just costs some performance. We can raise a SparseEfficiencyWarning, however.