returncode for Popen is valid only after communicate call

Found when testing a bug in cinder (1125416), code
relying on throw_on_error won't work because returncode
is None if checked before the communicate() method is
called

Change-Id: I8c9dd00396346ec3ad7bbe1dc17643c385da8d6f