As part of the process, vim is launched. Its STDIN and STDOUT are redirected to /dev/null, and its STDERR is redirected to a file. The contents of that file are discarded if vim returns successfully. However, vim is not exiting successfully in your case. vim claims an error happened by returning an exit code of 1. When a non-zero exit code is received, Text::VimColor croaks (displaying the exit code and the contents of the STDERR file). If vim is returning an error because of the warnings, then that's ... unfortunate. (And it's a bug in vim?)
The best solution would be to replace Text::VimColor::_run with a version that creates pseudo TTYs. IPC::Run can help you there.