Note this passage from man bash ( emphasis mine ):
Coprocesses
A coprocess is a shell command preceded by the coproc reserved word. A coprocess is executed asynchronously in a subshell, as if the command had been terminated with the & control operator, with a two-way pipe established between the executing shell and the coprocess.
Now, as we know unlike other *nix systems, Linux pipes are unidirectional(also ref man pipe(7), Portability section). So how does bash coproces achieve the "two-way pipe" without one existing on Linux ?