Can anyone tell me why I'm getting an error here? Shouldn't this program work as is?

Code:
;; nonempties : (listof listof a) -> (listof listof a)
;; return a list of the nonempty lists in a list of lists 
;; ex: (nonempties (list (list 1 2) empty (list 3) empty)) 
;; => (list (list 1 2) (list 3))
> (define (nonempties l)
  (cond
    [(empty? (first l)) (nonempties (rest l))]
    [else (cons (first l) (nonempties (rest l)))]))
> (nonempties (list (list 1 2) empty (list 3) empty))
first: expects a non-empty list; given: empty