let rec iter2i_exn xs ys ~f =
  match peek xs, peek ys with
  | Some x, Some y -> (
    f (count xs) (count ys) x y;
    junk xs ;
    junk ys ;
    iter2i_exn xs ys ~f
  )
  | NoneNone -> ()
  | _, _ -> raise Expected_streams_of_equal_length