ClearAll[lenwhile1, lenwhile2]
    lenwhile1 = #[[1 + LengthWhile[#[[All, 1]], # <= 0 &]]] &
    lenwhile2 = #[[1 + LengthWhile[#, #[[1]] <= 0 &]]] &

    lenwhile1 @ T
>    {2, 4, 4}

    lenwhile1 @ T ==     lenwhile2 @ T
> True

Timings: Using aardvark2012's setup with `SeedRandom[1]` 

    SeedRandom[1]
    T1 = RandomInteger[{-5, -1}, {100000, 3}]~Join~{{2, 4, 4}};
    T2 = RandomInteger[{-5, 5}, {100000, 3}];
    functions = {firstcase, lenwhile1, lenwhile2, pick, select, selfirst, throwcatch};

where tomd's suggestion `pick` is

     pick =  Pick[#, Sign[#[[All, 1]]], 1][[1]] &;

[![enter image description here][1]][1]

    Equal @@ (#[T1]& /@ functions)
> True

    Equal @@ (#[T2]& /@ functions)
> True


  [1]: https://i.sstatic.net/QYHXB.png