Modern block api allows passing in custom socket fd