refactoring to avoid:
max callStack error
requestTimeout's
all tick's "spend" to stream i/o operations