Changed Holder to timeout after a single wait, instead of retrying forever as long as held == null.
Fixed onResult handlers to abort after receiving an exception.
closing socket on IOException